移动端开发时,如果用户浏览器启用了无痕浏览,那么本地存储信息就会失效,会导致页面信息报错
解决办法:
先判断是否能适用 localStorage.setItem
如果不行在适用 cookie
cookie还是不行的话,只能考虑传回后台,在进行拉去数据
var tracelesStorage=function(name, val){
if(arguments.length> 1){
try{
localStorage.setItem(name, val);
}catch(e){
setCookie(name,val,'d365');//抛出异常使用cookie存储
}
}
else {
var dataStr='';
try{
localStorage.setItem('cookieTest', 'test');//判断是否支持存储
dataStr = localStorage.getItem(name);
}catch(e){
dataStr = getCookie(name)//同样抛出异常我们使用cookie去取值
}
return dataStr;
}
}
//取cookies值 var getCookie=function(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)){ if(!arr[2]){ return null ; }else if(arr[2] !='null'){ return unescape(arr[2]) ; }else{ return null ; }; }else{ return null; } } //存储Cookie var setCookie=function(name, value, time){ var strsec = getsec(time); var exp = new Date(); exp.setTime(exp.getTime() + strsec * 1); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString()+";path=/"; } var getsec=function(str) { var str1 = str.substring(1, str.length) * 1; var str2 = str.substring(0, 1); if (str2 == "s") { return str1 * 1000; } else if (str2 == "h") { return str1 * 60 * 60 * 1000; } else if (str2 == "d") { return str1 * 24 * 60 * 60 * 1000; } }