宝哥软件园

详细说明在JavaScript中使用localStorage的要点

编辑:宝哥软件园 来源:互联网 时间:2021-09-18

LocalStorage主要用于替代cookie,解决cookie读写困难、容量有限的问题。

LocalStorage具有以下特征。

1.localStorage是一个普通的对象,任何对象的操作都适用。

2.2.localStorage对象的属性值只能是字符串。

这需要特别注意。假设我们想在localStorage中保存一个对象,我们可以使用拼接。诸如

Varobj={'na=me' :' Chua ',age : 9 }//拼接到localStoragevar str=for(var I in obj){ str=encodeURIComponent(I)'=' encodeURIComponent(obj[I])';'}str=str.substring(0,str . length-1);localStorage.testObj=str//resolve varstra=local storage . testobj . split(';'。);var NewObj={ };for(var I=0;i strA.lengthi ){var tmp=strA[i]。split('=');newObj[decodeURIComponent(tmp[0])]=decodeURIComponent(tmp[1]);}当然,也可以使用json类将对象转换成字符串保存,取出后再将json字符串转换成真正可用的JSON对象格式。

3.3.localStorage支持的默认空间大小是5M,这是现代浏览器很好支持的。

HTML5 LocalStorage的截图,通过借用小伟0705本地存储。

我们提醒大家,在手机上使用时,需要在后台打开内存空间。

QUOTA _ EXCEEDED _ ERR " '是一个例外,如果您使用的存储容量超过限制(5M),将会报告该例外。

4.localStorage有自己的方法。

添加键值对:localStorage.setItem(键,值)。

获取键值:localStorage.getItem(key)。

删除键值对:localStorage.removeItem(键)。

清除所有键值对:localStorage.clear()。

获取localStorage: localStorage.key(索引)的属性名(键名)。

还有一个属性长度:不同于普通对象。

获取存储在本地存储中的键值对的数量.

下面的示例用于获取localStorage的键值对。

for(var I=0;ilocalStorage.lengthI){ console . log(local storage . key(I)' : ' local storage . getitem(local storage . key(I)));}基于相信本机方法的原则,localStorage应该尽可能用本机方法操作。然而在iPhone/iPad上,有时调用setItem()时会出现一个奇怪的QUOTA _ EXCEEDED _ ERR错误。解决方法是在设置项之前移除项()。因此,从这个兼容性问题来看,使用对象添加/删除键值对似乎更方便、更兼容。

5.localStorage事件。

localStorage事件无法在存储事件处理程序中取消此存储操作。

存储事件只是在本地存储数据发生更改后浏览器给你的通知。请注意,这里的条件是数据确实发生了变化。也就是说,如果当前存储区域为空,调用clear()不会触发事件。或者,如果通过setItem()设置了一个与现有值相同的值,则不会触发该事件。它将在存储区域发生变化时触发,其中包含许多有用的属性:

存储:表示密钥的原始值旧值:密钥,新值:密钥网址*发生密钥:更改的网址。

请注意,的URL属性是早期规范中的uri属性。一些浏览器发布较早,不包括这一变化。为了兼容,您应该在使用url属性之前检查它是否存在。如果没有url属性,您应该使用uri属性。

PS:在火狐和chrome中正常存储和读取,但是触发存储事件似乎有些问题。chrome可以通过修改localstorage来触发此页面的存储事件,而Firefox本身在修改storage后不会触发window的存储事件。同时访问A.html和B.html时,a页的设置项可以触发b页窗口的存储事件,b页的设置项可以触发a页窗口的存储事件,在IE9中,页面本身的设置值可以触发当前页面的存储事件。同一页面的设置值可以触发同一“原点”下其他页面窗口的存储事件,似乎更合理。示例推荐PrimeTechBlog的初始网络存储的本地存储。

因此,建议为兼容的浏览器编写兼容的处理程序,或者根本不使用存储事件。

例子

if(window . addeventlistener){ window . addeventlistener(' storage ',handle_storage,false);} else { window . attachevent(' on storage ',handle _ storage);};函数handle_storage(e) {if(!e){ e=window . event;}//响应代码部分.}一些小要点:

LocalStorage只有通过域名访问才能工作。

如果调用clear()方法,键、旧值和新值都将被设置为null。

LocalStorage的使用方式也是如此。

本地存储-无时间限制的数据存储会话存储-一个会话的数据存储。

LocalStorage提供了几种方法:

1.存储:localStorage.setItem(键,值)。

如果键存在,则更新值。

2.Get: localStorage.getItem(键)。

如果键不存在,则返回null。

3.删除:localStorage.removeItem(键)。

一旦删除,所有与键对应的数据都将被删除。

4.全部清除:localStorage.clear()。

有时候用removeItem逐个删除太麻烦,可以用clear,执行的结果会是清除所有localStorage对象保存的数据。

5.遍历存储在本地存储中的密钥。

总金额。长度数据,例如localStorage.length.key(索引)获取密钥,例如var key=localStorage.key(索引);

6.存储JSON格式的数据。

JSON.stringify(数据)将对象转换为JSON格式的数据字符串并返回转换后的字符串JSON.parse(数据)将数据解析为对象并返回解析后的对象。

注意:存储在本地存储中的数据不能在浏览器之间共享。一个浏览器只能读取自己浏览器的数据,存储空间为5M。

更多资讯
游戏推荐
更多+