子窗口关闭时是否可以通知父窗口? (在差异域上)

时间:2009-04-23 13:41:44

标签: javascript events browser

子窗口关闭时是否可以通知父窗口? (在不同的域名上?)

试图绕过window.opener在不同的域上不工作。

当子窗口关闭时,我是否至少能以某种方式得到通知?

2 个答案:

答案 0 :(得分:13)

您无法直接通知窗口关闭,但是您可以通过检查closed返回的窗口对象引用上的window.open()属性来关闭子窗口。 / p>

这是一个通过轮询closed属性在子窗口关闭后5秒内显示警报的示例:

var win = open('http://www.google.com');
var intervalId = setInterval(function() {
        if (win.closed) {
            clearInterval(intervalId);
            alert('Window closed! Hoorah!');
        }
    }, 5000);

答案 1 :(得分:-1)

使用两段代码的更好解决方案 1 /在弹出窗口中:

$(window).bind('unload',
  function(){
    window.opener.PopupUnload(window)
  })

2 /在父(主窗口)中:

function PopupUnload(wnd){
 setTimeout(function(){ // setTimeout is for IE
   if(wnd.closed)
     alert('You just killed me...')
  },10)
}

使用此代码,没有函数称为forever(使用setInterval())并且您在关闭和刷新弹出窗口(post / get)之间做出区别

(在IE8和FF3中测试)