Firefox编译简单加载脚本-browser.xul

Firefox编译简单加载脚本-browser.xul,firefox,firefox-addon,onload,Firefox,Firefox Addon,Onload,我试图通过特权chrome在每个dom页面上添加一个脚本标签,到目前为止,我能够获得标签的第一个页面加载,但在那之后,脚本什么也不做,我使用Firefox Nightly 44.0。我做错了什么 以下是我所关注的文件: mozilla central/browser/base/content/browser.xul(第74行) chrome://browser/content/yyy/x.js var myExtension = { init: function() {

我试图通过特权chrome在每个dom页面上添加一个脚本标签,到目前为止,我能够获得标签的第一个页面加载,但在那之后,脚本什么也不做,我使用Firefox Nightly 44.0。我做错了什么

以下是我所关注的文件:

mozilla central/browser/base/content/browser.xul(第74行)

chrome://browser/content/yyy/x.js

var myExtension = {
    init: function() {
        // The event can be DOMContentLoaded, pageshow, pagehide, load or unload.
        if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);
    },
    onPageLoad: function(aEvent) {
        var doc = aEvent.originalTarget; // doc is document that triggered the event
        var win = doc.defaultView; // win is the window for the doc
        // test desired conditions and do something
        // if (doc.nodeName != "#document") return; // only documents
        // if (win != win.top) return; //only top window.
        // if (win.frameElement) return; // skip iframes/frames
        alert("page is loaded \n" +doc.location.href);
    }
}
window.addEventListener("load", function load(event){
    window.removeEventListener("load", load, false); //remove listener, no longer needed
    myExtension.init();  
},false);
mozilla central/browser/base/jar.mn

content/browser/yyy/x.js            (content/yyy/x.js)

您需要使用参数为true的
loadFrameScript
来侦听未来的页面。以下是一些例子:

这里记录了这一点:

要阻止它加载到新选项卡中,则必须使用
removeDelayedFrameScript


github链接还展示了如何使用插件sdk内容脚本的示例。

谢谢!!!例如,我将接受你的回答。。非常感谢。非常感谢。酷@Null:)但是如果你想使用go with content script方法,你可以使用addon sdk,也可以从非sdk使用execute in sandbox:我也会研究一下,示例看起来像我需要的,但我会看看我想出了什么。所以我让浏览器加载,即使没有沙盒(我不知道它是如何工作的),但是我一直在使用附加sdk,但是你是说我可以添加globalMM.loadFrameScript(“chrome://modify-all-pages/content/frame-script.js“,对);到内容脚本?我想我必须将其添加到加载项脚本中?@null如果您使用的是加载项sdk,则不应使用框架脚本和消息管理器发送消息。创建Sdk是为了将这些东西抽象出来。
globalMM.loadFrameScript("chrome://modify-all-pages/content/frame-script.js", true);