如果我使用newWindow = window.open(url, name, dimensions)
创建了一个弹出窗口,如何以可在移动浏览器上运行的方式检查窗口是否已关闭?
我尝试使用if(newWindow.closed)
,这适用于PC上的Chrome,适用于iPhone。但是,在我测试的Android手机上,这不起作用;弹出窗口关闭但newWindow.closed不正确。 我应该使用哪种测试,以便在任何平台上检查弹出窗口是否已关闭?
额外信息:
我在Android手机上访问我的页面时,在关闭弹出窗口之前和之后使用jsconsole来记录newWindow(带console.log(newWindow)
)。当弹出窗口打开时,它会在控制台中显示为[object DOMWindow]
,一旦窗口关闭console.log(newWindow)
,只需在jsconsole中打印一个空行。请注意,打印空白行与jsconsole显示null
,undefined
或false
的方式不同,后者与我刚输入的完全相同。此外,尝试if(newWindow.closed || !newWindow)
的工作并不比if(newWindow.closed)
更好;似乎无论什么样的对象newWindow
在弹出窗口关闭后变成了它,它仍然是真实的。
答案 0 :(得分:3)
检查if(newWindow.closed != false)
而不是if(newWindow.closed)
解决了我的问题,并且可以在我测试过的所有平台上运行。问题的原因似乎是在某些Android手机上,当弹出窗口关闭时,newWindow.closed
的值最终为undefined
而不是true
。但是,当窗口打开时,newWindow.closed
可靠地设置为false
,无论您使用什么平台。
可以在这里找到可能解释这个bug背后原因的一些相关讨论(尽管我无法确认其真实性): http://code.google.com/p/android/issues/detail?id=21061