3***@qq.com
3***@qq.com
  • 发布:2016-12-17 16:57
  • 更新:2017-09-18 14:23
  • 阅读:2613

【bug反馈】HBuilder更新到7.6.3.20161216,webview的close方法出问题

分类:HTML5+

今天早上,把hbuilder更新到了最新的7.6.3.201612161809版本,同时手机上的app基座Builder应用也更新了。
先简单说下我的场景和环境。
Hbuilder 7.6.3.20161216
手机:Iphone 6

今天更新后遇到了一个bug:
1.app有一个退出登录功能,之后会打开login.html的webview;(非预加载)
2.由于我要控制整个app的webview数量,我在login.html的plusReady方法内,执行了关闭其他不用窗口。如下:

var all_webview = plus.webview.all();  
for(var j = 0; j < all_webview.length; j++) {  
    if(all_webview[j].id != 'HBuilder' && all_webview[j].id != 'login_new.html'){  
        all_webview[j].close();  
    }  
}

今天之前都是好好的,可是今天下午退出登陆后,结果是:页面空白,感觉是所有的webview全被关闭了。同时奇怪的是:在关闭窗口的循环后,我再次加入获取所有webviews打印出来,结果发现之前的webview.id 都依然存在。
代码如下:

var all_webview = plus.webview.all();  
for(var j = 0; j < all_webview.length; j++) {  
    if(all_webview[j].id != 'HBuilder' && all_webview[j].id != 'login_new.html'){  
        console.log('close : ' + all_webview[j].id);  
        all_webview[j].close();  
    }  
}  

console.log('-------------分割线------------');  

var newallview = plus.webview.all();  
for(var j = 0; j < newallview.length; j++) {  
    console.log('nowview : ' + newallview[j].id);  
}

运行结果是:
[LOG] : close : main.html
[LOG] : close : home.html
[LOG] : close : myorderlist.html
[LOG] : close : usermsg.html
[LOG] : close : pesonal.html
[LOG] : close : usermsg_sub.html
[LOG] : close : myorderlist_child
[LOG] : close : help_info.html
[LOG] : close : news_detail
[LOG] : -------------分割线------------
[LOG] : nowview : HBuilder
[LOG] : nowview : main.html
[LOG] : nowview : home.html
[LOG] : nowview : myorderlist.html
[LOG] : nowview : usermsg.html
[LOG] : nowview : pesonal.html
[LOG] : nowview : usermsg_sub.html
[LOG] : nowview : myorderlist_child
[LOG] : nowview : help_info.html
[LOG] : nowview : news_detail
[LOG] : nowview : login_new.html

2016-12-17 16:57 1 条评论 负责人:无 分享
已邀请:

最佳回复

骁骑

骁骑

问题已经修改,我们会尽快更新打包机

临时的解决方法是 关闭子窗口时先将子窗口从父窗口remove掉,然后在关闭子窗口

  • 3***@qq.com (作者)

    谢谢官方回复,挺开心的!

    2016-12-23 00:02

  • mubrand

    这次的升级怎么没解决这个问题。。。忘记了?

    2016-12-26 11:22

3***@qq.com

3***@qq.com (作者)

我想补充一下,当我把同样的代码,放到其他电脑上(上一个版本的Hbuilder)内进行同步到手机调试,功能一切正常,而放到最新的IDE和最新的APP基座内调试,就出现上述问题。

mubrand

mubrand - mubrand.com 承接各类app开发,java语言,含界面设计及前端

留名,感觉这次升级后webview关闭有问题。
http://ask.dcloud.net.cn/question/26590
同样的项目没有任何修改放在这次的升级版本中会出现bug,等统一回复吧

c***@163.com

c***@163.com

我也遇到这个问题,之前还是好好的,后来莫名其妙的遇到这个问题,安卓的还可以用,ios就不行了,一直在找这个问题,我还以为写的有问题,没想到你们也有,求解决方案

张一三

张一三

记得很早的时候,我只要使用plus.webview.all(),然后循环处理一些逻辑关闭,就会有bug。索性至今都不再使用该函数了。

现在一直使用 storage存储 来实现页面关闭逻辑

  • c***@163.com

    你使用storage存储,是怎么个写法,求大神指教

    2016-12-19 11:57

  • 张一三

    每次创建或显示窗口(非子窗口)时,把窗口id存储在数组末尾,关闭或隐藏父窗口时移除。

    2016-12-27 16:12

  • c***@163.com

    你是循环关闭数组中的id所对应的webview吗,是不是关闭父窗口,子窗口就对应关闭了

    2016-12-30 10:04

  • 张一三

    是的,我设置 窗口id==url 即 winId=winUrl ,父窗口关闭后其所属的子窗口自动全部关闭(系统默认的)

    2016-12-30 13:21

最爱橙子

最爱橙子

最新版更新后,退出应用会显示灰屏有闪动,应用不是直接退出,感觉怪怪的。明显是更新后出的问题。

l***@163.com

l***@163.com

官方没有没更新么,为什么还会有这种bug。。

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