chrome扩展开发:[11]本地存储
1、HTML5 LocalStorage是HTML5标准的一部分,大部分浏览器都提供了支持。
localStorage是以key--value对的形式存储的,key和value都只能是字符串类型,如果你提供的是其他类型,存储的时候也会被自动转换为字符串。
2、获取值(假设变量名称是aa)
var v=localStorage.aa
var v=localStorage["aa"]
var v=localStorage.getItem("aa");
设置值(假设变量名称是aa,要设置的值是"value1")
localStorage.aa="value1";
localStorage["aa"]="value1";
localStorage.setItem("aa","value1");
清除存储项
localStorage.removeItem("aa")
清除全部存储项
localStorage.clear()
3、检测localStorage是否可用
if(window.localStorage){ alert('可用');}else{ alert('不可用');}
4、使用localStorage存储json类型的数据:
获取数据
var v=JSON.parse(localStorage.getItem("aa"))
存储数据
localStorage.setItem("aa", JSON.stringify(v))
5、注意,localStorage是以域为单位进行操作的,不同域的localStorage是完全隔离的。
1、chrome.storage API是chrome扩展特有的api,它和HTML5 LocalStorage一个显著不同是可以存取object数据。也是以键-值的形式存取。
2、获取
chrome.storage.local.get(keys, function(valueArray) {
alert(valueArray)
});
![chrome扩展开发:[11]本地存储](https://exp-picture.cdn.bcebos.com/939c2d40b6f391870aa2877424fce186252fef11.jpg)
3、设置
chrome.storage.local.set({'value': theValue}, function() {
alert('存储成功')
});
![chrome扩展开发:[11]本地存储](https://exp-picture.cdn.bcebos.com/955ea0e434daf05e599d67c5751d96d81919e511.jpg)
4、清除存储项
chrome.storage.local.remove(keys,function() {
alert('清除成功')
})
![chrome扩展开发:[11]本地存储](https://exp-picture.cdn.bcebos.com/19587f20a7cd0c6ee04c1c07fed7997bbaf4dd11.jpg)
5、清除全部存储项
chrome.storage.local.clear(function() {
alert('清除全部存储项成功')
})
![chrome扩展开发:[11]本地存储](https://exp-picture.cdn.bcebos.com/db196cdade49610fafe8b3b0a56817e950e1d211.jpg)
1、用localStorage做一个实例,记录前面例子中的新闻列表,这样,下次打开浏览器时,上次的新闻列表依然存在。
2、扩展启动时将localStorage里的数据提取到变量中:
g_newsArr=JSON.parse(localStorage['newsArr']);
变量变化时将数据存储到localStorage中:
localStorage['newsArr']=JSON.stringify(g_newsArr);
下面是代码截图
![chrome扩展开发:[11]本地存储](https://exp-picture.cdn.bcebos.com/50a010f85856d53d849ac65d47d2bb665059ca11.jpg)
3、由于localStorage只能存储字符串,而我们要存取的变量时数组类型,所以使用了JSON.parse和JSON.stringigy,分别将字符串转化为数组和将数组转化为字符串
4、这样即使关闭浏览器后,下次启动时扔能看到上次保存的新闻列表
![chrome扩展开发:[11]本地存储](https://exp-picture.cdn.bcebos.com/116b1ae23ea23a4296c4bea43733ec3835bbc011.jpg)