【问题标题】:In-browser-javascript: under what circumstances does window.open return null/undefined?In-browser-javascript:window.open 在什么情况下返回 null/undefined?
【发布时间】:2014-03-14 00:58:51
【问题描述】:

我的 Web 应用程序的异常处理代码有时会报告 window.open 返回 null 或 undefined。 这是零星的,我看到它大部分时间都发生在 Firefox 4.0.1 和 5.0 上,在较小程度上发生在 Chrome 上。

与特定浏览器相关的时间和原因是什么?

我在某处听说 IE8 和 IE9 在保护模式下工作时可以做到这一点。真的吗?那么火狐呢?歌剧?铬合金?野生动物园?

重要提示:

  1. window.open 被直接调用 在 onclick 事件中(它不是 推迟,因为这会导致大多数 要显示的浏览器弹出窗口拦截器 警报)。
  2. window.open 打开一个空白窗口 那么其 HTML 内容是 通过 javascript 操作
  3. 请不要回复告诉我“为什么 你使用window.open吗?为什么不 而是做(这里的其他任何事情)”,因为这将是题外话。

【问题讨论】:

标签: javascript window


【解决方案1】:

我将尝试用我收集到的信息来回答我自己的问题。 我会在发现更多信息后立即更新。

火狐:

Firefox 中嵌入的弹出窗口阻止程序自动阻止对 window.open 的所有异步调用,效果是 window.open 返回 null/undefined。

为避免这种情况,window.open 调用必须是同步的,并且直接源自明确的用户操作,例如鼠标点击。

如果您需要根据来自异步事件(例如:XMLHttpRequest)的数据修改打开的窗口,您可以同步打开一个空窗口,缓存返回的窗口对象,然后再更新它。

此“hack”适用于所有浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2021-08-28
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    相关资源
    最近更新 更多