javascript - 浏览器内 javascript : under what circumstances does window. 打开返回 null/未定义?

标签 javascript window

我的 Web 应用程序的异常处理代码有时会报告 window.open 返回 null 或未定义。 这种情况是偶发的,我发现大多数情况下,Firefox 4.0.1 和 5.0 都会出现这种情况,而 Chrome 也会出现较小程度的情况。

何时以及为什么会发生与特定浏览器相关的情况?

我听说 IE8 和 IE9 在保护模式下工作时可以做到这一点。真的吗?那么火狐浏览器呢?歌剧? Chrome ? Safari?

重要说明:

  1. 直接调用window.open 在 onclick 事件中(不是 推迟,因为这会导致大多数 要显示的浏览器弹出窗口阻止程序 警报)。
  2. window.open 打开一个空白窗口 那么其 HTML 内容是 通过 JavaScript 进行操作
  3. 请不要回复告诉我“为什么 你使用window.open吗?为什么不 相反,做(这里的其他任何事情)”,因为这会偏离主题。

最佳答案

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

火狐浏览器:

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

为了避免这种情况,window.open 调用必须是同步的,并且直接源自显式用户操作(例如鼠标单击)。

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

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

关于javascript - 浏览器内 javascript : under what circumstances does window. 打开返回 null/未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6583582/

相关文章:

javascript - 删除 onclick 事件并在我自己的 onclick 之后触发 ist

javascript - 从服务器端还是客户端获取?

javascript - 用于 Backbone.js 的 Visual Studio Intellisense

eclipse - 是否可以将 “Find/Replace”窗口停靠在Eclipse中?

java - 如何判断JAVA创建的窗口是否关闭

javascript - jQuery 跳转到元素

javascript - MongoDB 检索另一个文档数组中包含的每个文档

c++:owlnext + vcl:新窗口缺少其父窗口

c# - 如何让主窗口等到新打开的窗口在 C# WPF 中关闭?

c# - 单击主应用程序窗口时如何聚焦模态 WPF 窗口