【问题标题】:Firefox extension, storing variable value until firefox is restartedFirefox 扩展,存储变量值直到 Firefox 重新启动
【发布时间】:2015-01-03 03:26:20
【问题描述】:

构建一个 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”。如何使变量值保持不变,直到所有 Firefox 窗口都关闭(重新启动)。

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

【问题讨论】:

    标签: javascript variables firefox firefox-addon


    【解决方案1】:

    你可以使用 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;
    }
    

    然后用函数代替变量名

    【讨论】:

    • 似乎无法使其正常工作。我创建了模块,并且正在从模块中检索变量值。当我更改变量值时,它只会持续到打开一个新窗口,与没有模块的功能相同。我应该什么时候导入模块?我在 window.addEventListener("load"... 之前的第一行导入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多