我可以订阅开启窗口的加载事件吗?

时间:2011-12-13 17:09:37

标签: javascript javascript-events

在子窗口中,我需要等待开启窗口导航到另一个域(或要关闭)。我目前没有使用事件,但使用间隔检查开启窗口,直到开启窗口为空或我无法再访问其位置(由于跨域限制)。我想尝试在开启窗口中使用一个事件。

这是我打开子窗口的方式:

window.open("wait.html", "_popup", "");

这就是我尝试在wait.html中订阅该事件的方式:

window.opener.addEventListener('load', waiting, false);
function waiting() {
    console.log("Waiting...");
}

但是没有调用事件处理程序。我在Chrome上工作,所以addEventListener应该在这里工作吗?

2 个答案:

答案 0 :(得分:2)

当文档加载所有javascript并且事件被清除时,这是出于安全原因而且不应该存在。

实现类似行为的一种方法是订阅卸载事件。

答案 1 :(得分:1)

这样做的一种方法是在孩子中调用一个函数:

var AWindow; 
function openChild() 
{ 
   AWindow = window.open("TestCallBack.html"); 
}; 

并在您的父窗口事件处理程序中:

var myChildSays = AWindow.childCallBack('from parent');

和子窗口中的一个函数:

function childCallBack(passstuff) 
{ 
  return "CHILD GOT:(" + passstuff + ")"; 
};