Javascript Firefox扩展,在重新启动Firefox之前存储变量值
构建Firefox扩展时,我需要在用户执行操作后保存一个值。我需要这个值持续到Firefox重新启动。我正在用这个代码进行测试Javascript Firefox扩展,在重新启动Firefox之前存储变量值,javascript,variables,firefox,firefox-addon,Javascript,Variables,Firefox,Firefox Addon,构建Firefox扩展时,我需要在用户执行操作后保存一个值。我需要这个值持续到Firefox重新启动。我正在用这个代码进行测试 Components.utils.import("chrome://***/content/symbols.jsm"); window.addEventListener("load", function() { myExtension.init() }, false); var myExtension = { init: function()
Components.utils.import("chrome://***/content/symbols.jsm");
window.addEventListener("load", function() { myExtension.init() }, false);
var myExtension = {
init: function() {
document.addEventListener("DOMContentLoaded", this.onPageLoad, false);
},
onPageLoad: function() {
if (blocked == 0) {
alert("OFF");
}
else {
alert("ON");
}
blocked = 1;
}
}
symbols.jsm
var EXPORTED_SYMBOLS = ["blocked"];
var blocked = 0;
使用此代码,Firefox将启动并显示“关闭”,因为尚未设置变量。(按预期)导航到其他页面,甚至打开一个新选项卡,都会显示“打开”,一旦打开新窗口,变量将丢失并显示“关闭”。如何使变量值保持不变,直到所有Firefox窗口关闭(重新启动)
我不想在about:config的首选项中设置它,因为用户可以轻松地更改它。您可以使用JavaScript代码模块 您的模块应该导出函数,而不仅仅是变量,例如
var EXPORTED_SYMBOLS = ["getBlocked", "setBlocked"];
var blocked = 0;
function getBlocked() {
return blocked;
}
function setBlocked(value) {
blocked = value;
}
然后使用函数而不是变量名似乎无法使其正常工作。我创建了模块,并且正在从模块中检索变量值。当我更改变量值时,它只会一直存在,直到打开一个新窗口,功能与没有模块时相同。我应该什么时候导入模块?我在窗口前的第一行导入。addEventListener(“加载”。。。