Winns
Winns

Reputation: 902

firefox addons, save data in simple-storage

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

Answers (1)

Wladimir Palant
Wladimir Palant

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);
    }
});

Further information

Upvotes: 2

Related Questions