最近,有个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+"");