onPageLoad在Firefox扩展开发中无法正常工作

时间:2012-05-29 14:06:54

标签: javascript firefox-addon xul

我是Firefox Extension Development的新手并且正在完成我的第一个程序。 我只需要在加载页面后弹出警报。 我的代码是这样的:

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");  
    }
}

不幸的是,我仍然得到了同样的结果。 请告诉我这个。

2 个答案:

答案 0 :(得分:0)

这可能是一个iframe问题。过滤掉iframe:

onPageLoad: function(aEvent) { 
    let ot=aEvent.originalTarget;
    if (ot.nodeName == '#document' && !ot.defaultView.frameElement)  {
    alert("Loaded");  
    }
}

答案 1 :(得分:0)

您可以在MDN上找到拦截来自Firefox插件的页面加载的几种方法的说明: https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads

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

  • 您是否想在某些特定网页加载时执行某些操作?
  • 您是否想在任何页面加载时执行某些操作?
  • 当整页加载(onload)时,你需要这样做吗? 文档准备就绪(ondomready)或在Firefox中显示页面时 改变,例如切换或打开标签时(这需要完整 不同的方法)?