Javascript 为什么windows只启动了一次“onload”事件?

Javascript 为什么windows只启动了一次“onload”事件?,javascript,firefox,greasemonkey,onload,Javascript,Firefox,Greasemonkey,Onload,到目前为止,我一直在寻找我问题的答案,但运气不好 这是我的密码: var oNewWindow = window.open(sLink,'_blank'); oNewWindow.addEventListener('load',function() { alert('Page loaded'); }, false); 当弹出窗口/选项卡打开时,会调用处理程序,但如果我在弹出窗口内浏览,则不会调用处理程序。为什么?有没有办法让它发挥作用 基本思想是用户打开一个弹出窗口,然后开始在弹出窗口中浏览,

到目前为止,我一直在寻找我问题的答案,但运气不好

这是我的密码:

var oNewWindow = window.open(sLink,'_blank');
oNewWindow.addEventListener('load',function() { alert('Page loaded'); }, false);
当弹出窗口/选项卡打开时,会调用处理程序,但如果我在弹出窗口内浏览,则不会调用处理程序。为什么?有没有办法让它发挥作用

基本思想是用户打开一个弹出窗口,然后开始在弹出窗口中浏览,同时父窗口中的代码继续工作并监视弹出窗口中发生的事情。弹出页面是同一域上的页面

在第一次加载弹出窗口之后,我将一个
onunload
处理程序附加到它,它将在父窗口中调用该处理程序,然后计时器将启动。然后父窗口的脚本将与弹出窗口的内容一起工作。然而,问题在于延迟,如果计时器用完,弹出窗口中的旧页面仍然存在,我会得到不正确的数据,我的整个脚本就会停止。在此之后,我无法附加另一个
onunload
处理程序

onload
处理程序是为整个窗口而不是窗口中的文档设置的,那么为什么不调用该处理程序呢


另外,我的脚本是在GreaseMonkey的帮助下运行的。我不需要跨浏览器,因为我只使用Firefox。

一旦用户离开原始页面,打开的窗口将不再具有打开窗口应用的
load
事件,这就是该警报不会再次触发的原因


您可以使用的一种方法是在
iframe
(www.mypage.com/myframe?url=someurl.com)
中包装所需url的页面,这样子窗口中的页面不会更改,但
iframe
的内容会更改。从这里,您可以告诉
窗口。opener
iframe

中发生了什么,一旦用户离开原始页面,打开的窗口将不再具有打开窗口应用的
加载事件,这就是该警报不会再次触发的原因


您可以使用的一种方法是在
iframe
(www.mypage.com/myframe?url=someurl.com)
中包装所需url的页面,这样子窗口中的页面不会更改,但
iframe
的内容会更改。从这里,您可以告诉
窗口。opener
iframe

中发生了什么,原因是当浏览器导航到新页面时,会为该页面初始化一个新的
窗口
对象。这可能会让人困惑,但最好将
窗口
对象视为与操作系统上运行的进程所拥有的窗口无关


总之,导航后,父窗口和打开的窗口之间的任何关系都将丢失

原因是,当浏览器导航到一个新页面时,会为该页面初始化一个新的
窗口
对象。这可能会让人困惑,但最好将
窗口
对象视为与操作系统上运行的进程所拥有的窗口无关


总之,导航后,父窗口和打开的窗口之间的任何关系都将丢失

另一种选择是将脚本块插入子窗口,然后子窗口将执行“加载”事件的附加


这样,它就完全独立于父窗口。

另一种选择是将脚本块插入子窗口,然后子窗口将执行“加载”事件的附加


这样,它就完全独立于父窗口。

非常好的方法。加载具有iframe的弹出窗口。然后从父脚本访问iframe并将
onload
事件附加到它,然后
iframe.src=link
。父脚本有一个iframe句柄,因此可以分析内容。非常好的方法。加载具有iframe的弹出窗口。然后从父脚本访问iframe并将
onload
事件附加到它,然后
iframe.src=link
。父脚本具有iframe句柄,因此可以分析内容。