在 firefox 插件中加载外部库
Load external libraries in firefox 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")]
});
}
});
有人知道为什么这行不通吗?提前致谢!
假设 startURL
是您加载项中文件的 url,(尽管您尚未明确 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")
]
}
});
}
});
虽然 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 模块。
感谢您的帮助。
我正在使用插件 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")]
});
}
});
有人知道为什么这行不通吗?提前致谢!
假设 startURL
是您加载项中文件的 url,(尽管您尚未明确 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")
]
}
});
}
});
虽然 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 模块。
感谢您的帮助。