我的 Web 应用程序的异常处理代码有时会报告 window.open 返回 null 或未定义。 这种情况是偶发的,我发现大多数情况下,Firefox 4.0.1 和 5.0 都会出现这种情况,而 Chrome 也会出现较小程度的情况。
何时以及为什么会发生与特定浏览器相关的情况?
我听说 IE8 和 IE9 在保护模式下工作时可以做到这一点。真的吗?那么火狐浏览器呢?歌剧? Chrome ? Safari?
重要说明:
- 直接调用window.open 在 onclick 事件中(不是 推迟,因为这会导致大多数 要显示的浏览器弹出窗口阻止程序 警报)。
- window.open 打开一个空白窗口 那么其 HTML 内容是 通过 JavaScript 进行操作
- 请不要回复告诉我“为什么 你使用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/