Jungley88
Jungley88
  • 发布:2017-10-09 17:25
  • 更新:2017-10-10 15:31
  • 阅读:1439

【报Bug】【底部选项卡模板】安卓webview 注入的js脚本会执行两次

分类:HTML5+

详细问题描述
[内容]
【基于 底部选项卡模板】webview 通过appendJsFile 或 setJsFile 注入的js 代码会执行两次(测试打包后debug模式,还是会执行两次)

重现步骤
[步骤]
在IDE中打开控制台 静等启动

[结果]
onloaded: 1 at js/util.js:40
注入代码
https://www.baidu.com/
txmp_style_miniplay:null
注入代码
https://www.baidu.com/
txmp_style_miniplay:null
onloaded: 0 at js/util.js:40
注入代码
http://www.qq.com/
txmp_style_miniplay:[object HTMLStyleElement]
注入代码
http://www.qq.com/
txmp_style_miniplay:[object HTMLStyleElement]

[期望]
onloaded: 1 at js/util.js:40
注入代码
https://www.baidu.com/
txmp_style_miniplay:null
onloaded: 0 at js/util.js:40
注入代码
http://www.qq.com/
txmp_style_miniplay:[object HTMLStyleElement]

运行环境
[系统版本]
windows
[IDE版本]
HBuilder 8.8.4.201709282021
旧版本也存在这个问题

附件
见附件 demo

联系方式
Email: 2012yejing@sina.cn

2017-10-09 17:25 负责人:无 分享
已邀请:
Neil_HL

Neil_HL

1.发个能重现问题的最简化demo,不要只发html和js这两个文件;

  1. http://www.qq.com/这个网址会跳转https://xw.qq.com/index.htm,所以导致执行两次
  • Jungley88 (作者)

    已修改 细化问题,并附上完整demo,还请看下

    2017-10-10 15:14

  • Neil_HL

    回复 Jungley88:都和你说啦http://www.qq.com/这个网址会跳转https://xw.qq.com/index.htm会执行两次loaded,你set了两次,把setJsFile放在page创建的时候就行啦

    2017-10-10 15:37

  • Jungley88 (作者)

    回复 Neil_HL: 要不你把demo 你运行一遍看看? 另外, http://www.qq.com/ 并不会跳转 到 微信版,我用的 华为平板测试。还有 setJsFile 确实是放在page创建的时候调用的

    2017-10-10 15:42

  • Neil_HL

    回复 Jungley88:看了demo,把setJsFile放在监听page的loaded之前,不要放在这个事件里面,就不会出问题了,把console.log('onloaded: '+index)换成console.log('onloaded: '+page.id)你会看到又把qq的页面的id打印了两遍, http://www.qq.com/ 这是pc站,https://xw.qq.com/index.htm这是wap站会自动跳的,你用手机浏览器试试吧。

    2017-10-10 15:57

  • Jungley88 (作者)

    把setJsFile放在监听page的loaded之前 就正常了, 跟 底部选项卡模板也没关系,跟 http://www.qq.com/ 跳转 也没关系 。另外一个话题 http://ask.dcloud.net.cn/question/29966 也是这个问题

    2017-10-10 16:18

Jungley88

Jungley88 (作者)

经测试 ,在上述条件下, webview 加载 本地文件 或 网络文件 都会执行 两次 注入 ,而 onloaded 事件 只会触发一次

该问题目前已经被锁定, 无法添加新回复