Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将外部js加载到";扩展;firefox扩展_Javascript_Firefox_Firefox Addon_Mozilla - Fatal编程技术网

Javascript 将外部js加载到";扩展;firefox扩展

Javascript 将外部js加载到";扩展;firefox扩展,javascript,firefox,firefox-addon,mozilla,Javascript,Firefox,Firefox Addon,Mozilla,我正在开发一个使用大量外部服务的firefox扩展,我希望在我的服务器上托管每个外部服务的.js文件,然后在需要时将每个外部服务加载到扩展中 这些外部js文件不是在firefox窗口上执行的“普通js”,它们包含应该在扩展上下文上执行的代码,例如,它们需要使用组件.class[“@mozilla.org/embedcomp/prompt service;1”] 例如: var myExtensionName = { init: function() { }, serv

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

这些外部js文件不是在firefox窗口上执行的“普通js”,它们包含应该在扩展上下文上执行的代码,例如,它们需要使用
组件.class[“@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();
请求。打开(“获取”http://example.com/func1.js");
addEventListener(“加载”,函数()
{
myExtensionName.service1_func=新函数(request.responseText);
},假);
request.send();
http://example.com/func1.js
应该包含函数体(没有周围的
函数(){}
)。

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

使用
XMLHttpRequest
下载JavaScript文件,并使用
Function
构造函数“编译”它。大概是这样的:

var-request=new-XMLHttpRequest();
请求。打开(“获取”http://example.com/func1.js");
addEventListener(“加载”,函数()
{
myExtensionName.service1_func=新函数(request.responseText);
},假);
request.send();

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

太棒了,它可以工作。您知道是否可以从一个js文件一次加载整个扩展名,而不是为每个函数加载一个js?当然可以-编译获得的源代码并立即调用:
(新函数(request.reponseText))()
。巨大的安全漏洞。非常感谢,我理解安全风险,但托管它的服务器甚至不会在线,只是在同一个网络上。太棒了,它可以工作。您知道是否可以从一个js文件一次加载整个扩展名,而不是为每个函数加载一个js?当然可以-编译获得的源代码并立即调用:
(新函数(request.reponseText))()
。巨大的安全漏洞。非常感谢,我理解安全风险,但托管它的服务器甚至不会在线,只是在同一个网络上。