2011-12-13 73 views
0

在子窗口中,我需要等待開啓者窗口導航到另一個域(或要關閉)。我目前沒有使用事件,而是使用間隔來檢查開啓器窗口,直到開啓器窗口爲空或我無法再訪問其位置(由於跨域限制)。我想嘗試在開啓器窗口中使用事件。我可以訂閱opener窗口的加載事件嗎?

我這是怎麼打開的子窗口:

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

這是我正在嘗試訂閱事件wait.html:

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

但事件處理函數不是叫。我在Chrome中工作,所以addEventListener應該在這裏工作嗎?要做到這一點

回答

2

當文檔加載所有JavaScript和事件被清除時,這是出於安全原因和不應該有這個。

實現類似行爲的一種方法是訂閱卸載事件。

+0

但第一次卸載發生後,卸載處理程序也被清除,對吧? – 2011-12-13 17:54:08

1

一種方法是調用在孩子的函數:

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

,並在你的父窗口的事件處理程序:

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

,並在子窗口的功能:

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

那麼,從技術上說,不是從子窗口訂閱父窗口事件。這不可能嗎? – 2011-12-13 17:48:34