【问题标题】:window.closed Fails in Safariwindow.closed 在 Safari 中失败
【发布时间】:2012-06-23 03:05:32
【问题描述】:

我在 Safari 中的 Javascript 的 window.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. 在打开的窗口中导航到不同的页面(不要使用谷歌搜索,因为这不会导致页面导航)
  3. 现在关闭打开的窗口
  4. 控制台仍应输出“打开”。

【问题讨论】:

    标签: javascript google-chrome safari


    【解决方案1】:

    只要窗口仍然打开,close 属性就应该为 false。

    这是一个正常工作的例子。如果警报关闭,则显示 true,如果仍然打开,则显示 false。

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

    【讨论】:

    • 我遇到的问题是,当我打开一个新窗口并在该窗口中导航时,chrome 和 safari 会失去对该窗口的引用,从而导致关闭后仍为 false。
    • 如果您所做的只是在该窗口中导航,那么它在技术上仍然是打开的,并且该值将保持为 false,因为它是打开的。我在 FF 和 Chrome 中都试过这个,得到了相同的结果。如果它是打开的,即使在导航之后,它也会返回 false,因为窗口仍然是打开的。
    • 在打开的窗口中导航并关闭它(使用 Safari)时,以下代码示例将始终返回 false:jsfiddle.net/CMK7h/9
    • 这两个小提琴都适合我。如果我在打开的窗口中导航,然后关闭它,下一个控制台日志会显示“关闭”。
    • 您使用的是哪个 Safari 版本(我的是 5.1.7 [7534.57.2])?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2016-07-12
    相关资源
    最近更新 更多