zoukankan      html  css  js  c++  java
  • Safari无痕浏览影响localStorage

    最近项目中遇到一个问题,有一个登录页,点击登录后,公司两个土豪金都不能正常跳转(但是登录请求已经发送到服务器了),其他人的手机都正常。项目又要急着上线,内心这个抓狂啊。。最后静下心来,终于把问题给解决了。

    解决过程:

    由于服务器有接收到客户端的ajax请求,所以就看客户端是否收到服务器的响应,在回调的success函数下alert(data.code),发现是接收到响应的,并且data.code=0,满足跳转条件,所以在success的else中继续alert,最终将问题定位到 sessionStorage.setItem('loginPhone',loginPhone);这一句上面,sessionStorage是h5的特性,手机端浏览器一般都支持,通过alert(sessionStorage)、(sessionStorage.setItem)和alert(typeof(sessionStorage.setItem))  发现都正常,typeof(sessionStorage.setItem)得到的是一个function,既然存在sessionStorage,又为什么不能正常执行呢。最后还是通过度娘找到了问题的根源---Safari无痕浏览会影响localStorage。所以只需要将这一句稍作修改即可

     try {
                    sessionStorage.setItem("loginPhone",loginPhone);
                } catch (e) {
                   alert("您处于无痕浏览,无法为您跳转");
                }

    以下是修改之前的代码:

     var loginPhone;
    
        function submitBindInfo(){
            if( checkSubmitMobile($("#phone-wrap")) &&  checkCode() &&checkContract())
            {
                var param={
                    phone:loginPhone,
                    authcode:$("#verifycode").val()
                };
                $.ajax({
                    type:"POST",
                    url:"/portal/member/login.do",
                    data:param,
                    dataType:"json",
                    timeout: 20000,
                    error:function(XMLHttpRequest, textStatus, errorThrown){
                        if(XMLHttpRequest.status==408){
                            alert("系统繁忙,请稍后尝试");
                           
                        }else{
                            alert(XMLHttpRequest.status+"错误");
                        }
    
                    },
                    success:function(data){
                        doSuccess(data);
                    }
                });
            }
        }
        function doSuccess(data){
            if(data.code!=0){
                loginFailCallBack(data.desc);
            }else{
    
                sessionStorage.setItem('loginPhone',loginPhone);
                doRedirct();
            }
        }
        function doRedirct(){
            switch (hash){
                case "#member" :
                    window.location.href="/portal/member/showMember.do";
                    break;
                case "#myOrder" :
                    window.location.href="/portal/myorder/showOrder.do";
                    break;
                case "#myCoupon" :
                    window.location.href="/portal/mycoupon/showCoupon.do";
                    break;
                default :
                    window.location.href="/portal/sinopec/step0.do";
                    break;
            }
        }
    

      

  • 相关阅读:
    HDFS API
    Wrong FS: hdfs://xxx/xxx expected: file:///
    Sqoop拒绝连接错误
    MySQL设置远程连接
    Eclipse远程连接Hadoop
    Hadoop创建新用户
    Nutch的安装和配置
    NameNode重新格式化以后DataNode不能启动
    Pig拒绝连接错误
    Pig jline.Terminal错误
  • 原文地址:https://www.cnblogs.com/liujufu/p/5371667.html
Copyright © 2011-2022 走看看