加载外部js以“扩展”firefox扩展

时间:2012-01-18 18:07:30

标签: javascript firefox firefox-addon mozilla

我正在开发一个使用大量外部服务的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台计算机上使用,所以这将是我维护它的最简单方法。

我怎么能实现这个目标?

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

1 个答案:

答案 0 :(得分:0)

警告:这是一个安全漏洞,请勿在其他人应该使用的扩展程序中执行此操作!

使用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() {})。