Reputation: 902
I am trying to create a Firefox addon, using Firefox Addon Builder.
I can't figure our how exactly I can save data in "simple-storage".
main.js
:
var data = require("self").data;
var ss = require("simple-storage");
if(typeof(ss.storage.bl) === 'undefined') {
ss.storage.bl = [];
}
blacklist = ss.storage.bl;
exports.main = function(){
var pageMod = require("page-mod");
pageMod.PageMod({
include: "*",
contentScriptWhen: 'end',
contentScriptFile: [data.url("jquery.min.js")]
});
var contextmenu = require("context-menu");
contextmenu.Item({
label: "block",
context: contextmenu.SelectorContext("a[href]"),
contentScriptFile: [data.url("jquery.min.js"),data.url("onclick.js"),data.url("core.js")]
});
};
onclick.js
:
self.on("click", function (node) {
user = node.href.substring(node.href.lastIndexOf('/') + 1);
blacklist.push(user);
blockthis();
});
Getting this error all the time:
onclick.js, line 4
in blacklist.push(user)
ReferenceError: blacklist is not defined
link : https://builder.addons.mozilla.org/addon/1054941/latest/
Upvotes: 1
Views: 1674
Reputation: 57681
A content script and your extension code don't run in the same context - they don't share any variables, so you cannot simply access a variable from your extension in your context. Also, you cannot use SDK modules in a content script. The content script should send a message back to the extension and let it perform all the necessary operations:
self.on("click", function (node) {
user = node.href.substring(node.href.lastIndexOf('/') + 1);
self.postMessage(user);
blockthis();
});
And in main.js
:
contextmenu.Item({
label: "block",
context: contextmenu.SelectorContext("a[href]"),
contentScriptFile: [data.url("jquery.min.js"),data.url("onclick.js"),data.url("core.js")],
onMessage: function(user)
{
blacklist.push(user);
}
});
Upvotes: 2