博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Safari无痕浏览影响localStorage
阅读量:5058 次
发布时间:2019-06-12

本文共 2377 字,大约阅读时间需要 7 分钟。

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

解决过程:

由于服务器有接收到客户端的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;        }    }

  

转载于:https://www.cnblogs.com/liujufu/p/5371667.html

你可能感兴趣的文章
第九次团队作业-测试报告与用户使用手册
查看>>
Equal Sides Of An Array
查看>>
CentOS笔记-用户和用户组管理
查看>>
Mongodb 基本命令
查看>>
Qt中QTableView中加入Check列实现
查看>>
“富豪相亲大会”究竟迷失了什么?
查看>>
控制文件的备份与恢复
查看>>
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>
20165235 第八周课下补做
查看>>
[leetcode] 1. Two Sum
查看>>
iOS 日常工作之常用宏定义大全
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
MVC Razor
查看>>
软件目录结构规范
查看>>
Windbg调试Sql Server 进程
查看>>
linux调度器系列
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>