【问题标题】:onPageLoad is not working properly in Firefox Extension DevelopmentonPageLoad 在 Firefox 扩展开发中无法正常工作
【发布时间】:2012-05-29 14:06:53
【问题描述】:

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

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

【问题讨论】:

    标签: javascript firefox-addon xul


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-08-03
        • 2017-05-03
        • 1970-01-01
        • 1970-01-01
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 2012-07-05
        • 1970-01-01
        相关资源
        最近更新 更多