窗口关闭在Safari中无法正常工作

4
我在Safari中遇到了Javascript的window.closed属性的奇怪问题。当我打开一个新窗口并在该窗口中导航时,关闭后closed属性始终保持为false。
这是Safari的默认行为吗?我在IE、Firefox和Chrome中没有问题。
我的代码:
var winRef = window.open(someURL);
// ... Polling logic ...
// Navigate in the opened window and close it.
console.log(winRef.closed); // Will output false even though the window is closed.

似乎在页面导航期间,winRef 变量失去了对窗口的引用。
以下步骤会在Safari中产生问题:
1.使用此处提供的示例代码:http://jsfiddle.net/CMK7h/9/ 并在Safari中打开。 2.在已打开的窗口中导航到另一个页面(不要使用 Google 搜索,因为这不会导致页面导航)。 3.现在关闭已打开的窗口。 4.控制台应该仍然输出“Open”。
1个回答

0

只要窗口还没有关闭,closed属性应该为false。

这里有一个正确运行的例子。如果窗口已经关闭,警报将显示true,如果它仍然打开,则显示false。

http://jsfiddle.net/QHXcG/2/


我遇到的问题是,当我打开一个新窗口并在该窗口中导航时,Chrome和Safari会失去对该窗口的引用,这会导致关闭后仍保持为false。 - Frédéric Hennequin
如果你只是在那个窗口中导航,那么从技术上讲它仍然是打开的,而且值将保持为false,因为它是打开的。我在FF和Chrome中都尝试过了,得到了相同的结果。如果它仍然打开,即使在导航后,它也会返回false,因为窗口仍然是打开的。 - bjo
以下代码示例在使用Safari浏览器时,当导航到打开的窗口并关闭它时,将始终返回false:http://jsfiddle.net/CMK7h/9/ - Frédéric Hennequin
这两个小例子对我来说都能正常工作。如果我在打开的窗口中导航,然后关闭它,下一个控制台日志会显示“已关闭”。 - Cecchi
你使用的Safari版本是多少(我的是5.1.7 [7534.57.2])? - Frédéric Hennequin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接