3

如果我使用 创建了一个弹出窗口newWindow = window.open(url, name, dimensions),我如何检查窗口是否以适用于移动浏览器的方式关闭?

我尝试使用if(newWindow.closed),这适用于 PC 上的 Chrome,也适用于 iPhone。但是,在我测试过的安卓手机上,这不起作用;弹出窗口关闭,但 newWindow.closed 不正确。我应该使用什么测试来检查弹出窗口是否关闭?

额外信息:在 Android 手机上访问我的页面时,我使用jsconsoleconsole.log(newWindow)在弹出窗口关闭之前和之后记录 newWindow(带有)。当弹出窗口打开时,它在控制台中显示为[object DOMWindow],一旦窗口关闭console.log(newWindow),就会在 jsconsole 中打印一个空行。请注意,打印空白行与 jsconsole 的显示方式不同nullundefined或者false,它们的显示方式与我刚刚输入的完全相同。此外,尝试if(newWindow.closed || !newWindow)并不比刚刚if(newWindow.closed)做的好。似乎newWindow弹出窗口关闭后变成什么样的对象,它仍然是真实的。

4

1 回答 1

3

检查if(newWindow.closed != false)而不是if(newWindow.closed)解决我的问题并在我测试过的所有平台上工作。问题的原因似乎是在某些 Android 手机上,最终的值newWindow.closed不是undefined关闭true弹出窗口时的值。但是,无论您使用的是什么平台,都可以在窗口打开时newWindow.closed可靠地设置为。false

可以在此处找到一些可能解释此错误背后原因的相关讨论(尽管我无法确认其真实性): http ://code.google.com/p/android/issues/detail?id=21061

于 2012-11-20T19:27:21.877 回答