(function(window,localStorage,undefined){ var LS = { set : function(key, value){ //在iPhone/iPad上有时设置setItem()时会出现诡异的QUOTA_EXCEEDED_ERR错误 //这时一般在setItem之前,先removeItem()就ok了 if( this.get(key) !== null ) this.remove(key); localStorage.setItem(key, value); }, //查询不存在的key时,有的浏览器返回undefined,这里统一返回null get : function(key){ var v = localStorage.getItem(key); return v === undefined ? null : v; }, remove : function(key){ localStorage.removeItem(key); }, clear : function(){ localStorage.clear(); }, each : function(fn){ var n = localStorage.length, i = 0, fn = fn || function(){}, key; for(; i<n; i++){ key = localStorage.key(i); if( fn.call(this, key, this.get(key)) === false ) break; //如果内容被删除,则总长度和索引都同步减少 if( localStorage.length < n ){ n --; i --; } } } }, j = window.jQuery; //扩展到相应的对象上 window.LS = window.LS || LS; //扩展到其他主要对象上 if(j) j.LS = j.LS || LS; })(window,window.localStorage);
var LocalData = { hname:location.hostname?location.hostname:'localStatus', isLocalStorage:window.localStorage?true:false, dataDom:null, initDom:function(){ //初始化userData if(!this.dataDom){ try{ this.dataDom = document.createElement('input');//这里使用hidden的input元素 this.dataDom.type = 'hidden'; this.dataDom.style.display = "none"; this.dataDom.addBehavior('#default#userData');//这是userData的语法 document.body.appendChild(this.dataDom); var exDate = new Date(); exDate = exDate.getDate()+30; this.dataDom.expires = exDate.toUTCString();//设定过期时间 }catch(ex){ return false; } } return true; }, set:function(key,value){ if(this.isLocalStorage){ if( this.get(key) !== null ) this.remove(key); window.localStorage.setItem(key,value); }else{ if(this.initDom()){ this.dataDom.load(this.hname); this.dataDom.setAttribute(key,value); this.dataDom.save(this.hname) } } }, get:function(key){ if(this.isLocalStorage){ var v = window.localStorage.getItem(key); return v === undefined ? null : v; }else{ if(this.initDom()){ this.dataDom.load(this.hname); return this.dataDom.getAttribute(key); } } }, remove:function(key){ if(this.isLocalStorage){ window.localStorage.removeItem(key); }else{ if(this.initDom()){ this.dataDom.load(this.hname); this.dataDom.removeAttribute(key); this.dataDom.save(this.hname) } } } }