在firefox插件中加载外部库

时间:2015-04-19 09:47:31

标签: javascript firefox firefox-addon firefox-addon-sdk

我正在使用addon sdk开发一个firefox插件,但是我没有成功导入插件中的外部库。重要的是要知道插件会打开一个新选项卡,我需要导入的库。

这是我的文件夹结构:

> data
   > jquery.js
   > pixlr.js
> lib
   > main.js

要导入库jquery.js和pixlr.js,我已经尝试了很多东西。由于需要在新标签中访问这些库,我尝试了以下内容:

tabs.open({
    url: startURL,
    inNewWindow: inNewWindow,
    inBackground: inBackground,
    contentScriptFile: [self.data.url("jquery.js")],
    onReady: function (tab) {
        tab.attach({
            contentScriptFile: [self.data.url("jquery.js"),
                                self.data.url("pixlr.js")]
        });
    }
});

有人知道为什么这不起作用?提前谢谢!

2 个答案:

答案 0 :(得分:2)

假设startURL是您的插件中文件的网址,(虽然您尚未明确startURL的用途)。

试试这个:

tabs.open({
    url: startURL,
    inNewWindow: inNewWindow,
    inBackground: inBackground,
    onReady: function (tab) {
        tab.attach({
          contentScript: "self.options.urls.forEach(url => {" +
                           "var script = document.createElement('script')" +
                           "script.src = url;" +
                           "document.body.appendChild(script);" +
                         "});",
          contentScriptOptions: {
            urls: [
                self.data.url("jquery.js"),
                self.data.url("pixlr.js")
            ]
          }
        });
    }
});

答案 1 :(得分:0)

虽然erikvold的回答对我有用,但我也找到了另一个(也有点简单)的解决方案:

Cu.import(self.data.url("pixlr.js", this));
Cu.import(self.data.url("urlShortener.js", this));

您可以使用Firefox插件sdk提供的导入功能。我也希望包含jquery,但这对于插件运行的沙盒模式并不是很有效。由于我主要使用jquery发送ajax请求,所以我使用了Firefox插件sdk提供的Request模块。

感谢您的帮助。