我正在尝试使用Firefox Addon Builder创建一个Firefox插件。
我无法确定如何在“简单存储”中保存数据。
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();
});
始终获取此错误:
onclick.js,第4行 在blacklist.push(用户)
ReferenceError:未定义黑名单
link:https://builder.addons.mozilla.org/addon/1054941/latest/
答案 0 :(得分:2)
内容脚本和扩展程序代码不在同一上下文中运行 - 它们不共享任何变量,因此您不能简单地在上下文中从扩展程序中访问变量。此外,您不能在内容脚本中使用SDK模块。内容脚本应该将消息发送回扩展,并让它执行所有必要的操作:
self.on("click", function (node) {
user = node.href.substring(node.href.lastIndexOf('/') + 1);
self.postMessage(user);
blockthis();
});
在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);
}
});