我的 Web 应用程序的异常处理代码有时会报告 window.open 返回 null 或未定义。这是偶发的,我看到它在 Firefox 4.0.1 和 5.0 上发生的大部分时间,在较小程度上发生在 Chrome 上。
何时以及为什么会发生与特定浏览器相关的情况?
我听说 IE8 和 IE9 在保护模式下工作时可以做到这一点。真的吗?那么火狐呢?歌剧?铬合金?苹果浏览器?
重要笔记:
我将尝试用我收集到的信息来回答我自己的问题。一旦我发现更多,我会更新它。
火狐:
嵌入在 Firefox 中的弹出窗口阻止程序会自动阻止对 window.open 的所有异步调用,效果是 window.open 返回 null/undefined。
为避免这种情况,window.open 调用必须是同步的,并且直接源自显式的用户操作,例如鼠标单击。
如果您需要根据来自异步事件(例如:XMLHttpRequest)的数据修改打开的窗口,您可以同步打开一个空窗口,缓存返回的窗口对象,然后再更新它。
这个“hack”适用于所有浏览器。
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |