Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox扩展,在重新启动Firefox之前存储变量值_Javascript_Variables_Firefox_Firefox Addon - Fatal编程技术网

Javascript 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()

构建Firefox扩展时,我需要在用户执行操作后保存一个值。我需要这个值持续到Firefox重新启动。我正在用这个代码进行测试

 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(“加载”。。。