关于safiry开启无痕浏览时本地存储的处理

来源:互联网 发布:linux cpu 核数 编辑:程序博客网 时间:2024/05/22 04:59

在移动端做交互,我们经常会用到本地存储localstorage来存储变量。但是在safiry浏览器开启无痕浏览模式时,本地存储不管用了。那么是不是就不能行了呢。当然不是。除了localstorage和sessionStorage之后外,我们知道,可以使用cookie来存储。在safiry开启无痕浏览的时候,本地存储会抛异常,所以可以通过捕获异常来判断是否使用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;            }        }
    //下面是cookie存储的取值和存值
        var getCookie=function(name)//取cookies值        {            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;            }        }//如果要清除存储,同样抛异常的时候就需要清除cookie
var clearStorage=function(name){    // 清除存储            if(!name) { return false;}            try{                localStorage.setItem('cookieTest', 'test');//正常清除                localStorage.removeItem(name);            }catch(e){                document.cookie = name + "=" + null + ";expires=" + 0+";path=/";//抛出异常,存储到了cookie,因此清除cookie。            }        }

“`

如果用sessionStorage也是同样的思路。

原创粉丝点击