我正在开发一个使用大量外部服务的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台计算机上使用,所以这将是我维护它的最简单方法。
我怎么能实现这个目标?
英语不是我的主要语言,所以我希望我能很好地解释自己,如果我需要澄清一些问题,请提出问题评论。
答案 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() {}
)。