安卓内嵌 webview 不能执行 javascript 的原因

 

安卓内嵌 webview 不能执行 javascript 的原因:

  1. webview 的设置不对。在 RN 框架里面使用的webview 默认设置是不会有这个问题的。所以不用怎么怀疑RN的配置。可检查的参数

    1. settings.setJavaScriptEnabled(true);

    2. settings.setDomStorageEnabled(true);

  2. WebView.setWebChromeClient(new WebChromeClient());  是否有设备。 RN 框架默认是有设置的。

  3. 因为 webview 内核差异,有的手机可以,有的外部浏览器可以但内嵌浏览器不可以。这是因为各种内核各个版本的浏览器内核对javascript语言的支持不一样,特性不一样。比如 ES6 的支持,只要网页代码里面出现 es6 的东西比如 let 声明,一些低版本的系统(android 5.x 以及以下)不能正常运行,并且在 js 的节点里面的所有 js 代码,都会失效,包括 console.log , alert 等跟踪日志的手段都没用了。

  4. 当需要访问其他协议进行跳转的时候不能打开微信、支付。需要检查 shouldOverrideUrlLoading 里面是否有做 intent 的跳转。(只是最近碰到的问题,列在一起)

  5. 系统浏览器对一些控件做了限制,比如 vivo android 5.1.1 系统里面,把 alert 给屏蔽掉了。

  6. 其他待补充

 

 

调试小结:

  1. 安卓如何查看 webview 内的输出日志( console.log ) ?

    1. https://my.oschina.net/xmlspyspring/blog/126045

  2. 安卓使用 chrome 进行调试内嵌浏览器:

    1. 在源码里面找到 webview 创建的地方,插入代码:   WebView.setWebContentsDebuggingEnabled(true);   。

    2. 在电脑上打开 chrome - dev tool(快捷键 command + option + i) 

    3. 点 更多- more tool - remote device 。

    4. 看到已经连上的安卓设备,选择展示出来的这个手机上已经显示的网页链接 右侧有一个 【inspect】,点击之后,就可以实时调试了。需要重新刷新网页的话,也只需要 command + r

  3. 再补充一个苹果调试网页方式

    1. iphone 里面 设置-safari -高级选项 - 打开“javascript” 和 “web 检查器"

    2. 电脑上打开 safria  , 偏好设置 - 高级 - 勾选“在菜单栏中显示 开发 菜单”

    3. safria -  开发 - xxx 的 iphone - 选择一网页

    4. ok 可以调试了

 

各个手机上网页展示不同的原因主要是 内核差异。内核的差异点有 ???  当碰到这个手机可以,那个手机不可以的时候,对比一下安卓系统版本,浏览器版本,品牌。

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值