Web存储机制,为了克服服由cookie 带来的一些限制,当数据需要被严格控制在客户端上时,无须持续地将数据发回服务器。提供一种在cookie 之外存储会话数据的途径和另一种存储大量可以跨会话存在的数据的机制,即sessionStorage 和globalStorage。后来在h5 修订时将 globalStorage 废弃换成了localStorage,与globalStorage 不同,不能给localStorage 指定任何访问规则;规则事先就设定好了。要访问同一个localStorage 对象,页面必须来自同一个域名(子域名无效),使用同一种协议,在同一个端口上。
主要方法 localStorage.getItem,localStorage.setItem,localStorage.removeItem
var localStorageFunc = { //获取 localStorage getStorage:function(storage){ var str = localStorage.getItem(storage); if(str != null && str != ''){ var obj = JSON.parse(JSON.parse(str)); return obj; } }, //设置 localStorage 未嵌套 setStorage:function(storage,key,val){ var obj = this.getStorage(storage); var saveObj = this.utilStorage(obj,key,val); localStorage.setItem(storage,saveObj); }, //设置 localStorage 嵌套 secondStorage:function(storage,tagKey,key,val){ var obj = this.levelStorage(storage,tagKey,key,val); this.setStorage(storage,tagKey,obj); }, //清除 localStorage clearStorage:function(storage){ localStorage.removeItem(storage); }, //json 整理格式化 utilStorage:function(obj,key,val){ if(typeof obj == 'object'){ obj[key] = val; var str = JSON.stringify(obj); str = str.replace(/\\/g,''); obj = JSON.stringify(str); }else{ var item = '{"'+key+'":"' + val + '"}'; obj = JSON.stringify(item); } return obj; }, //次级json 整理格式化 levelStorage:function(storage,tagObj,key,val){ var tag = this.getStorage(storage); var tagItem = tag[tagObj]; if(typeof tagItem == 'object'){ tagItem[key] = val; }else if(tagItem == undefined){ tagItem = '{"'+key+'":"' + val + '"}'; tagItem = JSON.parse(tagItem); } return tagItem; } };
json 嵌套