Reputation: 1434
I try to inject content script on page and use
console.log("starting addon");
pageMod.PageMod({
include: "*",//tempopary
contentScriptFile: self.data.url("testPreload.js"),
contentScriptWhen: 'start'});
testPreload.js:
console.log('testPreload');
I see "starting addon" in log and if I use contentScript:"console.log('testPreload')"
instead of contentScriptFile
I also see "testPreload".
But when I use contentScriptFile
I see "starting addon" but not "testPreload". What am I doing wrong?
EDIT
Error: Error opening input stream (invalid filename?)
filePath resource://jid1-ktaxagdysynpew-at-jetpack/extension/data/testPreload.js
Upvotes: 7
Views: 1046
Reputation: 16831
Instead of:
contentScriptFile: self.data.url("testPreload.js"),
Use:
contentScriptFile: "resource://<your_extension_name>/testPreload.js",
self.Data.url()
is a function that given a file path will return the full URI path to the file assuming it is under your add-on's data
folder.
If you prefer to put your file at the root of the package, you can instead build the URI path yourself as in the above example. Just replace <your_extension_name>
with the actual name you've given to your add-on in its package.json
file.
Upvotes: 0
Reputation: 2602
You want to move your testPreload.js
file into the data
directory. The self.data
module is actually referencing that directory so the self.data.url()
function gives you a valid URL to the files in that directory. FYI those URLs tend to look like resource://[your-jetpack-id]/data/[file])
Again, just move your: lib/testPreload.js
to data/testPreload.js
and that should fix the problem.
Upvotes: 4
Reputation: 2856
Your contentScript Files should reside in data directory to be able to access it through self.data.url('scriptname')
.
Move your testPreload.js
to data directory.
See https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Loading_Content_Scripts
Upvotes: 2