构建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的首选项中设置它,因为用户可以轻松更改它。
答案 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;
}
然后使用函数而不是变量名