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

onPageLoad is not working properly in Firefox Extension Development

本文关键字:常工作 工作 Firefox 扩展 开发 onPageLoad      更新时间:2023-09-26

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

不幸的是,我仍然得到同样的。请告诉我这一点。

这可能是一个 iframe 问题。要过滤掉内嵌框架,请执行以下操作:

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

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

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

  • 您想在加载某些特定页面时执行某些操作吗?
  • 您想在任何页面加载时执行某些操作吗?
  • 您是否需要在整个页面加载(加载)时执行此操作,当文档已准备就绪(ondomready)或当页面显示在Firefox中时更改,例如在切换或打开选项卡时(这需要完全不同的方法)?