如何在孩子关闭时调用父窗口的javascript函数?

时间:2010-05-05 13:49:13

标签: javascript javascript-events

我正在创建一个弹出窗口。在完成子项(弹出)窗口的工作并单击关闭按钮后,我需要调用父窗口的javascript函数。我怎样才能做到这一点。 我不是自己创建子窗口,而是显示其他URL的内容。

3 个答案:

答案 0 :(得分:9)

我认为你不能得到一个事件,因为当URL来自不同的域时,你不能弄乱文件本身。但是,您可以轮询并检查窗口对象的“已关闭”属性:

var w = window.open("http://what.ever.com", "OtherWindow");
setTimeout(function() {
  if (w.closed) {
    // code that you want to run when window closes
  }
  else
    setTimeout(arguments.callee, 100);
}, 100);

如果您愿意,也可以启动间隔计时器:

var w = window.open("http://what.ever.com", "OtherWindow");
var interval = setInterval(function() {
  if (w.closed) {
    // do stuff
    cancelInterval(interval);
  }
}, 100);

答案 1 :(得分:0)

如果子窗口不是来自与父窗口相同的域名,则由于相同的源策略而被锁定。这是为了防止跨站点脚本攻击(XSS)而刻意完成的。

答案 2 :(得分:0)

不要为此投票。摆脱arguments.callee只是对Pointy代码的改进。为Pointy投票。

var w = window.open("http://what.ever.com", "OtherWindow");
setTimeout(function timeout() {
  if (w.closed) {
    // code that you want to run when window closes
  }
  else
    setTimeout(timeout, 100);
}, 100);