5

Я совершенно новый для Firefox и его расширений. Есть ли что-то вроде скрипта, использующего JavaScript, который запускается каждый раз при загрузке страницы? Мое расширение chrome вставляет файл css, создающий тег ссылки с помощью js. Как перенести это в Firefox?Эквивалент сценарию контента в расширении Firefox?

ответ

7

Вам нужен API pageMod.

var pageMod = require("page-mod"); 
pageMod.PageMod({ 
    include: "*.example.org", 
    contentScript: 'window.alert("Page matches ruleset");' 
}); 
+1

На какой странице я помещаю это? Возможно, файл js включен в browser.xul? –

+0

@JacquesBlom: вы помещаете его в 'lib/main.js' для расширения, созданного с помощью [Add-on SDK] (https://addons.mozilla.org/en-US/developers/builder). –

+0

, когда я это делаю: включить: «facebook.com» - он не будет работать –

0

Вы можете использовать mozIJSSubScriptLoader для выполнения JavaScript (хром: //myExtension/content/script.js) каждый раз webpage loads. Вот пример кода, который вам нужно изменить в соответствии с вашим хромовым каталогом

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 
    } 
}; 
0

Раньше я использовал Greasemonkey в Firefox. На самом деле, Chrome Extensions начался как подражание Greasemonkey и стал источником сценариев контента.

Смежные вопросы