【问题标题】:Load external libraries in firefox addon在 Firefox 插件中加载外部库
【发布时间】:2015-04-28 04:12:29
【问题描述】:

我正在使用插件 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")]
        });
    }
});

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

【问题讨论】:

  • 您能提供更多信息吗?您的分机何时拨打tabs.open

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


【解决方案1】:

假设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")
            ]
          }
        });
    }
});

【讨论】:

    【解决方案2】:

    虽然 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 模块。

    感谢您的帮助。

    【讨论】:

    • 我不知道为什么这会对你有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多