我是新手,试图写一些基础扩展。为了我的扩展工作,我需要初始化一些数据,所以我所做的是在我的background.js
我声明了这样的内容。
localStorage["frequency"] = 1; //I want one as Default value. This line is not inside any method, its just the first line of the file background.js
用户可以转到“选项”页面,并使用GUI将上述变量更改为任何值。一旦用户在UI中更改它,就会更新该值。
现在问题在于我的理解background.js每次重启机器时都会重新加载。因此,每次重新启动计算机并打开Chrome时,频率值都会更改为1.为了避免这种情况,我需要初始化此值?
答案 0 :(得分:1)
您可以使用特定的默认密钥。因此,如果未设置frequency
,您可以尝试default-frequency
。然后,仍然在background.js中设置或定义默认密钥。
我喜欢一步完成,就像这样的功能
function storageGet(key,defaultValue){
var item = localstorage.getItem(key);
if(item === null)return defaultValue;
else return item;
}
(根据specification localstorage,如果没有设置值,则必须返回null
。)
所以对于你的情况,它看起来像
var f = storageGet("frequency",1);
此外,您可能有兴趣查看chrome.storage API。它的使用类似于localstorage,但提供了可能对您的扩展有用的其他功能。特别是它支持跨不同的Chrome浏览器同步用户数据。
编辑我更改了关于apsillers异议的if语句。但是由于规范说它应该是null,我认为检查它而不是未定义是有意义的。
答案 1 :(得分:1)
这是另一种解决方案:
// background.js
initializeDefaultValues();
function initializeDefaultValues() {
if (localStorage.getItem('default_values_initialized')) {
return;
}
// set default values for your variable here
localStorage.setItem('frequency', 1);
localStorage.setItem('default_values_initialized', true);
}
答案 2 :(得分:0)
我认为问题在于你的语法。要获取并设置localStorage值,请尝试使用:
// to set
localStorage.setItem("frequency", 1);
// to get
localStorage.getItem("frequency");