Firefox扩展,存储变量值,直到重启firefox

时间:2015-01-02 13:32:29

标签: 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() {
        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并且" OFF"显示因为尚未设置变量。(按预期)导航到不同的页面甚至打开新选项卡将显示" ON"然而,一旦打开一个新窗口,变量就会丢失并且" OFF"显示。在关闭所有Firefox窗口(重新启动)之前,如何使变量值保持不变。

我不想在about:config的首选项中设置它,因为用户可以轻松更改它。

1 个答案:

答案 0 :(得分:2)

您可以使用JavaScript代码模块https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using

您的模块应该导出函数而不仅仅是变量,例如

var EXPORTED_SYMBOLS = ["getBlocked", "setBlocked"];
var blocked = 0;
function getBlocked() {
    return blocked;
}
function setBlocked(value) {
    blocked = value;
}

然后使用函数而不是变量名