正在将外部js加载到“;延伸“;firefox扩展

Loading external js to "extend" firefox extension

本文关键字:延伸 firefox 扩展 加载 外部 js      更新时间:2023-09-26

我正在开发一个使用大量外部服务的firefox扩展,我想在我的服务器上为这些外部服务的每一个托管一个.js文件,然后在需要时将每一个加载到扩展中。

这些外部js文件不是在firefox窗口上执行的"普通js",它们包含应该在扩展上下文上执行的代码,例如,它们需要使用Components.classes["@mozilla.org/embedcomp/prompt-service;1"]

例如:

var myExtensionName = {
    init: function() {
    },
    service1_func: function() {
    }
}

我希望能够从外部文件加载service1_Func,它应该像硬编码到扩展文件中一样工作。我之所以需要这个,是因为service1_Func需要经常更新,而且我不想每次都更新整个扩展。我知道这可能会造成一些安全风险,但扩展不是为了分发,但它将在20多台计算机上使用,所以这将是我维护它的最简单方法

我该如何做到这一点

英语不是我的主要语言,所以我希望我能很好地解释自己,如果我需要澄清一些事情,请提问

警告:这是一个安全漏洞,不要在其他人应该使用的扩展中这样做!

使用XMLHttpRequest下载JavaScript文件,使用Function构造函数"编译"它

var request = new XMLHttpRequest();
request.open("GET", "http://example.com/func1.js");
request.addEventListener("load", function()
{
  myExtensionName.service1_func = new Function(request.responseText);
}, false);
request.send();

http://example.com/func1.js应包含函数体(不包含周围的function() {})。