【问题标题】:detect window.opener window refresh event检测window.opener窗口刷新事件
【发布时间】:2012-08-29 14:39:34
【问题描述】:

假设我在窗口 A 上做

var newWindow = window.open('url', 'name', 'width=100');

并打开一个新窗口(称为窗口 B)

然后在窗口 B 上,我得到对开启器窗口(窗口 A)的引用

var opener = $(window.opener)

当窗口 A 刷新和/或完成刷新时,有没有办法使用上面的 opener 变量从窗口 B 检测?

【问题讨论】:

  • 1) 这与您的原始问题stackoverflow.com/questions/12269535/… 有何不同? 2) 可能每隔一段时间从窗口 B 轮询 opener 以获取变量或其他内容,如果它发生变化,则让窗口 B 为窗口 A 所知(这是理论上的)。
  • 刷新是什么意思?您想检测是否有人刷新窗口 A?

标签: javascript jquery browser window refresh


【解决方案1】:

您可以检测到开启器何时卸载,例如:

$(opener).unload()

在 newWindow 中,您应该能够在超时后重新分配开启器中的变量。

不要忘记在重新加载后也重新分配卸载功能。

我做了一个DEMO:http://fiddle.jshell.net/doktormolle/2Pcn8/show/

来源:
开瓶器:http://jsfiddle.net/doktormolle/2Pcn8/
新窗口:http://jsfiddle.net/doktormolle/jB9D6/

在 IE(6-9)、FF、Chrome、Safari 中为我工作。
不能在 Opera 中工作

【讨论】:

  • 嗯,这在 Internet Explorer 中似乎不起作用(我使用了 9)
【解决方案2】:

我会在原始窗口中设置一个变量,可能是时间戳或类似的东西:

$(document).ready(function() {
   var datime = Date();
});

然后在窗口 B 中,你可以做同样的事情,并根据两个窗口的创建日期,你会知道窗口 A 最近是否刷新。您还可以将窗口 A 的创建日期作为变量存储在窗口 B 中,以便您随时知道窗口 A 已刷新。

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2023-03-16
    • 2013-05-18
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多