admin管理员组

文章数量:1558043

前言

事情的开始是原生js写了个放在webview上的h5页面,在现有的几台测试机测试过没有问题,就直接上线了。一段时间后,有客户反馈页面显示不正常。要了客户的账号在自己的手机上测试是没有问题的,反复查过代码实在想不出问什么其他手机没有问题,就客户的手机有问题(排除了网络问题)。改了几次写法,最后找到一篇博文发现可能是webview的问题(《关于Oppo、Vivo手机低于Android 7.0版本WebView中JS不执行,CSS加载异常的问题》)。查了下用户的手机系统确实是低于Android7的,然后请安卓小哥哥帮我看下能不能再webview中加那些代码,小哥哥帮我看过后写了个测试包找了个云测平台测试,发现可能不是webview的问题,是代码本身有问题 = = 。。。

 问题

云测平台报错日志如下:

一开始条件反射就去找 Uncaught Syntax Error: Unexpected identifier异常处理方法,无非就是如下三点:

  1. 标点符号的意外(中文逗号 引号等)
  2. asp中onserverclick 和 onclick一起写的时候,onclick = "test()" onserverclick="btn_click",看起来是没有任何问题的,但是 写的时候 onclick里面函数一定要带 ';'分号,不然就会报这个异常,找了半天.....也就是说要这样写onclick = "test();" ,onserverclick里面不用写,但是onclick一定要写
  3. 字符串类型的值没有加双引号

但是我如果是标点什么的问题话,编译器会自动报错,但是还是找了很久可能会出现的问题。 

后来找到打印出的报错日志,报错的226行,这行大概写的是下面这种变量声明赋值。

let test = 'test';

联想到用户Android 5的操作系统,很大可能是因为不兼容es6写法的 let ,这句写在比较开始的地方,这儿报错的话,就导致后面js操作dom节点显示在页面上的内容没有显示。

解决

把es6写法全部改成es5的写法,比如let,const之类的全部都要用回var,不能用箭头函数等。

写在最后 

改完后确实就没问题了,啊~~~这个问题差点让我挠秃头 ,借了几台vivo机器一毛钱问题都没有。最后没想到是操作系统版本过低不兼容es6问题。 = = 其实也是因为写的原生js,用react大概就不会了。

(这其实是个充值页面,用户爸爸用这么低版本的手机还能给我们充钱也是很感动了哈哈哈。。。)

本文标签: 原因代码vivoandroidjs