我尝试在页面上注入内容脚本并使用
console.log("starting addon");
pageMod.PageMod({
include: "*",//tempopary
contentScriptFile: self.data.url("testPreload.js"),
contentScriptWhen: 'start'});
testPreload.js:
console.log('testPreload');
我看到"开始插入"在日志中,如果我使用contentScript:"console.log('testPreload')"
而不是contentScriptFile
,我也会看到" testPreload"。
但是当我使用contentScriptFile
时,我会看到"启动插件"但不是" testPreload"。我做错了什么?
修改
错误:Error opening input stream (invalid filename?)
filePath资源://jid1-ktaxagdysynpew-at-jetpack/extension/data/testPreload.js
答案 0 :(得分:4)
您希望将testPreload.js
文件移至data
目录。 self.data
模块实际上引用了该目录,因此self.data.url()
函数为您提供了该目录中文件的有效URL。仅供参考这些网址看起来像resource://[your-jetpack-id]/data/[file])
再次,只需将您的lib/testPreload.js
移至data/testPreload.js
即可解决问题。
答案 1 :(得分:2)
您的contentScript文件应位于数据目录中,以便能够通过self.data.url('scriptname')
访问它
将您的testPreload.js
移至数据目录。
请参阅https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Loading_Content_Scripts
答案 2 :(得分:0)
而不是:
getA(param)
.then(function (A) {
getB(A)
.then(function (B) {
getC(A, B)
});
});
使用:
contentScriptFile: self.data.url("testPreload.js"),
contentScriptFile: "resource://<your_extension_name>/testPreload.js",
是一个函数,给定文件路径将返回文件的完整URI路径,假设它位于加载项的self.Data.url()
文件夹下。
如果您希望将文件放在软件包的根目录下,则可以自己构建URI路径,如上例所示。只需将data
替换为您在<your_extension_name>
文件中为加载项提供的实际名称。