我的Web应用程序的异常处理代码有时会报告window.open返回null或undefined。 这是零星的,我发现它大部分时间都在Firefox 4.0.1和5.0上发生,而在较小程度上发生在Chrome上。
何时以及为何与特定浏览器相关联?
我听说IE8和IE9在保护模式下工作时可以做到这一点。真的吗?那火狐呢?歌剧?铬?的Safari?
重要说明:
答案 0 :(得分:3)
我会尝试用我能够收集的内容回答我自己的问题。 我会在发现更多内容后立即更新。
<强>火狐:强>
Firefox中嵌入的弹出窗口阻止程序会自动阻止对window.open的所有异步调用,结果是window.open返回null / undefined。
为避免这种情况,window.open调用必须是同步的,并且直接源于鼠标单击等显式用户操作。
如果您需要根据异步事件(例如:XMLHttpRequest)中的数据修改打开的窗口,您可以同步打开一个空窗口,缓存返回的窗口对象,然后再更新它。
此“黑客”适用于所有浏览器。