场景
项目中某部分代码有用到localStorage储存数据,该部分代码在线上一直正常跑着。 直到前几天突然有用户反馈有个页面在他iPad safari上显示不正常,遂用iPad一整调试后找到原因。
原因
ios上safari开启隐身模式时,localStorage无法写入新的内容,并且会抛出异常导致js无法正常执行,最终页面无法正常加载。
解决
使用try catch包裹对localStorage写入的代码:
1 2 3 4 5 6 7 |
try { localStorage.setItem('refer', this.$route.query.refer); //来源渠道 localStorage.setItem('channel', this.$route.query.channel); //来源地址 localStorage.setItem('from_xdy', this.$route.query.from_xdy) } catch(e) { layer.msg('本地储存写入错误,若为safari浏览器请关闭隐身模式浏览。'); } |
我看到了layer
这边公司移动端首选弹层控件
看看效果
再看看