0

我是 Firefox 扩展开发的新手,正在做我的第一个程序。只是我需要在加载页面后弹出一个警报。我的代码是这样的:

var myExtension = {  
init: function() {    
    if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);  
},  
onPageLoad: function(aEvent) { 
alert("Loaded");  
}
}  
window.addEventListener("load", function load(event){  
window.removeEventListener("load", load, false);
myExtension.init();    
},false); 

但是我收到了几次警报框。然后我发现了“#document”,然后我添加了一个 IF 条件:

onPageLoad: function(aEvent) { 
    if (aEvent.originalTarget.nodeName == '#document')  {
    alert("Loaded");  
    }
}

不幸的是,我还是一样。请就此给我建议。

4

2 回答 2

0

可能是 iframe 问题。要过滤掉 iframe:

onPageLoad: function(aEvent) { 
    let ot=aEvent.originalTarget;
    if (ot.nodeName == '#document' && !ot.defaultView.frameElement)  {
    alert("Loaded");  
    }
}
于 2012-05-30T11:13:28.820 回答
0

您可以在 MDN 找到从 Firefox 插件拦截页面加载的几种方法的描述: https ://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads

选择正确的解决方案取决于您想要实现的目标。

  • 您想在某些特定页面加载时做些什么吗?
  • 你想在任何页面加载时做些什么吗?
  • 当整个页面加载(onload),文档准备好(ondomready)或Firefox中显示的页面发生变化时,例如切换或打开标签时(这需要完全不同的方法),您是否需要这样做?
于 2012-05-30T11:14:12.143 回答