内容简介:最近老项目会员中心上报了一个问题,报错如下:部分用户在登录时会出现报错的情况,出现频率大概是每三天有一两个。 根据报错,很明显是setItem的问题。查看web docs没有说有兼容性问题
问题
最近老项目会员中心上报了一个问题,报错如下:
部分用户在登录时会出现报错的情况,出现频率大概是每三天有一两个。 根据报错,很明显是setItem的问题。查看web docs没有说有兼容性问题
继续了解,发现localstorage对ios11以下隐私模式有兼容问题,调用setItem会报错。即ios11以下的隐私模式不支持localstorage
解决办法
思路是在不兼容的浏览器(模式)下使用cookies来替代localstorage
const _isLocalStorageSupported = function() { try { window.localStorage.setItem('test', 1) window.localStorage.removeItem('test') return true }catch(err) { return false }}
const getStorage = function(key) { ///localStorage.getItem / cookies let res = '' if(_isLocalStorageSupported()) { res = window.localStorage.getItem(key) }else { ///cookie let name = `${key}=` let ca = document.cookie.split(';') for(let i=0; i<ca.length; i++) { let c = ca[i].trim() if (c.indexOf(name) === 0) { res = c.substring(name.length, c.length) } } } return res}const setStorage = function(key, val) { ///localStorage.setItem / cookies if(_isLocalStorageSupported()) { window.localStorage.setItem(key, val) }else { ///cookie let d = new Date(); d.setTime(d.getTime()+(30*24*60*60*1000)); let expires = `expires=${d.toGMTString()}`; document.cookie = `${key}=${val}; ${expires}`; }}复制代码
封装set和get的全局公共方法
补充
关于为啥 unhandled promise rejection 我有点不理解
我是做了catch处理的,这个setItem是在.then()回调里执行的,应该被正常catch而不至于最后被进程捕获。很奇怪,有没有大佬知道原因的,欢迎评论告诉我,谢谢。
完
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 隐私保护新突破:高斯差分隐私框架与深度学习结合
- Android 隐私安全更新一览
- 日志中的用户隐私安全
- 日志中的用户隐私安全
- 【PPT分享】德国信息技术安全、隐私及责任中心张阳博士——现代隐私权:“社交网络与机器学习模式”案例研究
- [译] 聚焦 Android 11 : 隐私和安全
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
电子邮件营销密码
[美] Jeanniey Mullen、David Daniesl / 薛剑韬 / 人民邮电出版社 / 2009-9 / 39.00元
在当今互联网蓬勃发展的形势下,电子邮件是互联网应用最广的服务之一。那么如何利用其作为有效的营销工具呢?本书系统地讲解了美国电子邮件营销的预算统筹、营销策略、管理模式、执行机制、涉及的技术、营销实施的细节等,其方法有很强的可循性,并可预见将获得的成果。阅读本书之后,读者会深刻感受到电子邮件营销的博大精深,它既是一门扎实严谨的科学,又是一项充满创造力的艺术。. 本书适合企业管理人员及市场营销人员......一起来看看 《电子邮件营销密码》 这本书的介绍吧!