In-browser-javascript:在什么情况下.Open返回null/undefined

In-browser-javascript: under what circumstances does window.open return null/undefined?

本文关键字:null undefined 返回 Open 在什么 情况下 In-browser-javascript      更新时间:2023-09-26

我的web应用程序的异常处理代码有时会报告那个窗口。Open返回null或未定义。这是偶尔发生的,我看到大多数时候发生在Firefox 4.0.1和5.0上,在Chrome上发生的程度较小。

在特定的浏览器中,何时以及为什么会发生这种情况?

我听说IE8和IE9在保护模式下可以这样做。这是真的吗?那么Firefox呢?歌剧吗?铬吗?旅行吗?

重要提示:

  1. 窗口。直接调用Open在onclick事件中(它不是)推迟,因为这将导致大多数浏览器的弹出窗口阻止显示警报)。
  2. 窗口。Open打开一个空白窗口那么谁的HTML内容呢
  3. 请不要回复我"为什么"你用window。open吗?为什么不

我将尝试用我所收集到的信息来回答我自己的问题。我一有发现就更新。

Firefox:

Firefox中嵌入的弹出窗口拦截器会自动阻止所有对window的异步调用。打开,效果就是那个窗口。Open返回null/undefined

为了避免这种情况,窗口。Open call必须是同步的,并且直接来自一个显式的用户操作,比如鼠标点击。

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

这个"hack"适用于所有浏览器