2010-07-13 41 views
4

我希望能夠知道用戶何時離開我已加載到由Javascript打開的窗口中的頁面。例如,如果我有:在由Javascript打開的窗口上附加onload處理程序

newWindow = window.open('http://www.example.com', 'testWindow'); 

我想,當用戶從該頁面導航離開知道(所以卸載,onunload的,onbeforeunload會爲我所有的工作,如果任何可附後)。新窗口來自不同的域,所以也許有一些相同的原產地政策正在進行,但我已經能夠用iframe做到這一點。例如:

<iframe src='http://www.example.com' onload='alert("load");'><iframe> 

工作得很好,但我需要爲窗口而不是iframe做到這一點。

回答

4

你可以這樣說:

newWindow = window.open('http://www.example.com', 'testWindow'); 
newWindow.onload = function() { 
    alert("loaded"); 
}; 

You can give it a try here。然而,有一些限制,窗口必須位於相同的域,以符合same-origin policy(否則onload事件不會被掛鉤)。在怪異域與測試框架相同的示例中,這非常重要...嘗試更改域或協議,您將看到它不起作用,並且在控制檯中會出現錯誤。

+0

所以你基本上說因爲同源策略我不能這樣做?對於爲什麼它適用於iframe而不是窗口的任何見解? – jhchen 2010-07-15 18:48:50

+0

我懷疑這是在IE9中工作。 newWindow在IE9中返回null。 – Raghav 2012-07-12 13:56:39