Google chrome extension 在何处初始化扩展相关数据
我是一个新手,试图写一些基本的扩展。为了使扩展正常工作,我需要初始化一些数据,所以我所做的就是在Google chrome extension 在何处初始化扩展相关数据,google-chrome-extension,Google Chrome Extension,我是一个新手,试图写一些基本的扩展。为了使扩展正常工作,我需要初始化一些数据,所以我所做的就是在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将上述变量更改为任何值。一
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。为了避免出现这种情况,我需要初始化此值。我认为问题在于语法。要获取和设置本地存储值,请尝试使用以下方法:
// to set
localStorage.setItem("frequency", 1);
// to get
localStorage.getItem("frequency");
您可以只使用特定的默认键。因此,如果未设置
频率
,您将尝试默认频率
。默认键仍然在background.js中设置或定义
我喜欢在一个步骤中,在这样的函数中完成
function storageGet(key,defaultValue){
var item = localstorage.getItem(key);
if(item === null)return defaultValue;
else return item;
}
(根据localstorage,如果未设置任何值,则必须返回null
。)
所以对于你的情况来说
var f = storageGet("frequency",1);
此外,您可能有兴趣查看。它的使用类似于localstorage,但提供了其他功能,这些功能可能对您的扩展有用。特别是,它支持跨不同的chrome浏览器同步用户数据
编辑我更改了关于apsillers异议的if声明。但是既然规范说它应该为null,我认为检查它而不是未定义是有意义的。这是另一种解决方案:
// 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);
}
getItem
和setItem
实际上与属性访问相同。唯一微不足道的区别是,属性访问不能持久存储在作为localStorage现有属性名称的键上(例如,localStorage[“getItem”]=“foo”
不会持久,但localStorage.setItem(“getItem”,“foo”)
有。另一个区别是,可以包装函数以覆盖其默认行为,例如,在存储前对对象进行JSONify处理。+1;但是,您可能希望在检查中使用if(typeof item!=“undefined”)
。ifgetItem
为且程序存储false
(或任意),则检索将失败,并使用默认值。感谢您的快速回答。将尝试实现。@LeoR Right,good catch!对不存在的键的属性访问会产生未定义的,而函数访问会产生null
,正如您所说。这里有语法错误吗?localStorage.setItem('frequency'))=1;显示未捕获的引用错误:赋值中的左侧无效,因此我将其更改为localStorage。setItem['frequency']=1;未显示错误,但localStorage中未存储任何项目。已尝试localStorage['frequency']=1;在localStorage中工作并显示。我是否做错了什么?无需担心,此操作有效。localStorage.setItem(“频率”,1);