如何使火狐扩展运行js在指定的域

How to make firefox extension run js on specified domain

本文关键字:js 何使 火狐 扩展 运行      更新时间:2023-09-26

我已经做了一个Chrome扩展在过去,它只运行在一个域(说test.com),并执行我的JS文件(说my.js)一旦该域打开。我希望把它移植到Firefox。

如何做到这一点?我是Firefox插件开发的新手。我试着从Firefox文档中阅读,但无法理解

是一个bootstrap插件还是Overlay插件?

无论如何……试试on page load

给出的代码
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);

我自己做的是(例如只在imdb.com上运行):

let doc = aEvent.originalTarget;
if (doc.location.hostname.match(/'.imdb'.com$/)) {
    // this is the page that you want to run on
}

如果您在Firefox中使用Addon-SDK,您几乎只需要page-mod模块,该模块在域/URL与page-mod期望的匹配时执行脚本。看看这个,也看看内容脚本是如何与插件通信的。