JSON.parse在手机浏览器上出现illegal access错误

在html5项目中,使用JSON.parse从本地存储读取数据时,发现在Android手机上的QQ浏览器和海豚浏览器会出现非法访问错误。经过调试发现,当localStorage的数据为null时,JSON.parse在部分旧版Chrome浏览器上存在bug。解决方案是将数据转换为字符串后再进行解析,以避免错误影响后续JS执行。
摘要由CSDN通过智能技术生成
 

      最近,有个html5的项目,用到了本地存储功能,大概用法就是把用户数据组装成json对象存进去,后续再取出来。

      本来就是很简单的东西,但没想到用android手机上的qq,海豚浏览器访问时,某个页面竟发生了异常,js无法执行,换了pc,甚至其他型号手机却又并无异常出现。

      我个郁闷,只能手机调试了。整了个静态页面,在关键点打上alert(这也是痛苦的地方,调试真机js目前没个好的工具),通过wifi访问来调试。

      终于在如下代码发现异常:

                var bookListStr = localStorage.getItem("book_list");
                alert(bookListStr);
               
                var bookList;
                try {
                bookList = JSON.parse(bookListStr);
                } catch(e) {
                 alert(e);
                }

       JSON.parse的方法,google的手机浏览器上竟然支持的有bug,当bookListStr为null时,报出个illegal access的错误,之前我代码没加catch,导致后面的js都失效了。

再上网找了下,发现chrome6时已修复了该bug,但看了手机浏览器的ua,基本都是6.0以下版本的。没办法,只好改成以下代码兼容了:

        bookList = JSON.parse(bookListStr+"");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值