(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)
}
}
}
}