牛骨文教育服务平台(让学习变的简单)
博文笔记

safari无痕模式localStorage报错

创建时间:2016-05-23 投稿人: 浏览次数:2384

无痕模式应该是禁用了localStorage对象,但是window.localStorage是存在的
但是document.cookie是可以使用的

try {
        localStorage.setItem("isPrivateMode", "1");
        localStorage.removeItem("isPrivateMode");
        window.isPrivateMode = false;
    } catch(e) {
        window.isPrivateMode = true;
    }
    if (!window.isPrivateMode && window.localStorage) { // 不是 Safari 无痕模式并且能用 localStorage
        localStorage.removeItem("scheme");
        localStorage.setItem("scheme",scheme);

        localStorage.removeItem("caiqrhost");
        localStorage.setItem("caiqrhost",caiqrhost);

        localStorage.removeItem("paytype");
        localStorage.setItem("paytype",paytype);

        localStorage.removeItem("classname");
        localStorage.setItem("classname",classname);
    }
    else{
        try{
            var cookie = new cookies();
            cookie.delCookie("scheme");
            cookie.delCookie("caiqrhost");
            cookie.delCookie("paytype");
            cookie.delCookie("classname");

            cookie.setCookie("scheme",scheme,30);
            cookie.setCookie("caiqrhost",caiqrhost,30);
            cookie.setCookie("paytype",paytype,30);
            cookie.setCookie("classname",classname,30);
            //alert(cookie.getCookie("classname"));
        }
        catch(e){
            alert(e);
        }

    }

cookie.operate.js

var cookies = function(){};
cookies.prototype = {
    setCookie:function(c_name, value, expiredays){
        var exdate=new Date();
        exdate.setDate(exdate.getDate() + expiredays);
        document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
    },
    getCookie:function(name){
        var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

        if(arr=document.cookie.match(reg)){
            return (arr[2]);
        }
        else{
            return null;
        }

    },
    delCookie:function(name){
        var cookie = new cookies();
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval=cookie.getCookie(name);
        if(cval!=null){
            document.cookie= name + "="+cval+";expires="+exp.toGMTString();
        }        
    }
}

完美解决。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。