2010-07-13 40 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