android 旧机不执行js,关于vivo X6(Android 7.0以下)js代码不执行的原因

前言

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

问题

云测平台报错日志如下:

8157a74aa06308bd17c1acbdafb3f8b9.png

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

标点符号的意外(中文逗号 引号等)

asp.net中onserverclick 和 onclick一起写的时候,onclick = "test()" onserverclick="btn_click",看起来是没有任何问题的,但是 写的时候 onclick里面函数一定要带 ';'分号,不然就会报这个异常,找了半天.....也就是说要这样写onclick = "test();" ,onserverclick里面不用写,但是onclick一定要写

字符串类型的值没有加双引号

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

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

let test = 'test';

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

解决

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

写在最后

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值