Javascript 相当于Firefox扩展中的内容脚本?

Javascript 相当于Firefox扩展中的内容脚本?,javascript,firefox,google-chrome,google-chrome-extension,firefox-addon,Javascript,Firefox,Google Chrome,Google Chrome Extension,Firefox Addon,我对Firefox及其扩展相当陌生。是否有类似于每次加载页面时都运行JavaScript的脚本?我的chrome扩展注入了一个css文件,使用js创建一个链接标签。如何将其移植到Firefox 您需要API 您可以使用执行JavaScript(chrome://myExtension/content/script.js)每一次。下面是您需要根据chrome目录修改的示例代码 window.addEventListener("load", function load(event){ win

我对Firefox及其扩展相当陌生。是否有类似于每次加载页面时都运行JavaScript的脚本?我的chrome扩展注入了一个css文件,使用js创建一个链接标签。如何将其移植到Firefox

您需要API

您可以使用执行JavaScript(chrome://myExtension/content/script.js)每一次。下面是您需要根据chrome目录修改的示例代码

window.addEventListener("load", function load(event){
    window.removeEventListener("load", load, false); //remove listener, no longer needed
    myExtension.init();  
},false);

var myExtension = {
  init: function() {
    var appcontent = document.getElementById("appcontent");   // browser
    if(appcontent){
      appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
    }
    var messagepane = document.getElementById("messagepane"); // mail
    if(messagepane){
      messagepane.addEventListener("load", function(event) { myExtension.onPageLoad(event); }, true);
    }
  },

  onPageLoad: function(aEvent) {
    var doc = aEvent.originalTarget; // doc is document that triggered "onload" event
    // do something with the loaded page.
    // doc.location is a Location object (see below for a link).
    // You can use it to make your code executed on certain pages only.
    var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
              loader.loadSubScript("chrome://myExtension/content/script.js", doc); 

    // add event listener for page unload 
    aEvent.originalTarget.defaultView.addEventListener("unload", function(event){ myExtension.onPageUnload(event); }, true);
  },

  onPageUnload: function(aEvent) {
    // do something
  }
};

我曾经在Firefox上使用Greasemonkey。事实上,Chrome扩展从模仿Greasemonkey开始,是内容脚本的起源。

我应该把它放在哪一页?browser.xul中可能包含一个js文件?@JacquesBlom:您将其放入
lib/main.js
中,用于使用构建的扩展。这不是有效的匹配模式:此链接不再工作。你现在想要什么
window.addEventListener("load", function load(event){
    window.removeEventListener("load", load, false); //remove listener, no longer needed
    myExtension.init();  
},false);

var myExtension = {
  init: function() {
    var appcontent = document.getElementById("appcontent");   // browser
    if(appcontent){
      appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
    }
    var messagepane = document.getElementById("messagepane"); // mail
    if(messagepane){
      messagepane.addEventListener("load", function(event) { myExtension.onPageLoad(event); }, true);
    }
  },

  onPageLoad: function(aEvent) {
    var doc = aEvent.originalTarget; // doc is document that triggered "onload" event
    // do something with the loaded page.
    // doc.location is a Location object (see below for a link).
    // You can use it to make your code executed on certain pages only.
    var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
              loader.loadSubScript("chrome://myExtension/content/script.js", doc); 

    // add event listener for page unload 
    aEvent.originalTarget.defaultView.addEventListener("unload", function(event){ myExtension.onPageUnload(event); }, true);
  },

  onPageUnload: function(aEvent) {
    // do something
  }
};