user2107004
user2107004

Reputation:

Firefox extension, storing variable value until firefox is restarted

Building a Firefox extension and I require to save a value after an action has been performed by the user. I need this value to persist until Firefox is restarted. I`m testing with this code.

 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;

With this code Firefox is started and "OFF" is shown because variable has not been set yet.( as intended) Navigating to a different page and even opening a new tab will show "ON" how ever as soon as a new window is opened the variable is lost and "OFF" is shown. How can I make the variable value persist until all Firefox windows are closed(restart).

I do not want to set this in a preference in about:config as this can be easily changed by the user.

Upvotes: 1

Views: 213

Answers (1)

unobf
unobf

Reputation: 7244

You can use JavaScript code modules https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using

Your module should export functions instead of just variables e.g.

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

and then use the functions instead of the variable name

Upvotes: 1

Related Questions