如果我使用newWindow = window.open(url, name, dimensions)创建了一个弹出窗口,如何检查该窗口是否关闭,以便在移动浏览器上工作?
我试过使用if(newWindow.closed),这在PC上的Chrome上工作,在iPhone上工作。然而,在我测试过的安卓手机上,这是行不通的;弹出窗口关闭,但newWindow.closed不是真的。,我应该使用什么测试来检查弹出窗口是否关闭了呢?
额外信息:当我在安卓手机上访问我的页面时,在弹出窗口关闭之前和之后,我使用jsconsole记录newWindow (与console.log(newWindow))。虽然弹出窗口是打开的,但它在控制台中显示为[object DOMWindow],一旦窗口关闭,console.log(newWindow)只会在js控制台上打印一条空行。请注意,打印空行与js控制台显示null、undefined或false的方式不同,它们显示的方式与我刚才键入的完全相同。此外,尝试if(newWindow.closed || !newWindow)的效果并不比if(newWindow.closed)更好;不管弹出窗口关闭后newWindow变成了什么类型的对象,它仍然是真实的。
发布于 2012-11-20 19:27:21
检查if(newWindow.closed != false)而不是if(newWindow.closed)解决了我的问题,并在我测试过的所有平台上工作。造成这一问题的原因似乎是,在一些安卓手机上,当弹出窗口关闭时,newWindow.closed的值最终是undefined而不是true。但是,在打开窗口时,newWindow.closed可靠地设置为false,不管您在哪个平台上。
在这里可以找到一些可能解释此bug背后原因的相关讨论(尽管我无法确认其准确性):http://code.google.com/p/android/issues/detail?id=21061
https://stackoverflow.com/questions/13400872
复制相似问题