项目有个需求要关闭除了入口和首页以外的所有webview,用plus.webview.all()后进行循环判断关闭。
但发现有某些页面没有被关闭,通过console.log(),plus.webview.all()是获取到这些webview的,
plus.webview.all().forEach(function(wv, index){
console.log("all:" + index + ":" + wv.id);//log1
if(index !== 0 && wv.id !== "home.html"){
console.log("close:" + index + ":" + wv.id);//log2
plus.webview.getWebviewById(wv.id).close("none");
}
});
输出log如下:
all:0:HBuilder
all:1:A.html
close:1:A.html
all:2:B.html
close:2:B.html
all:3:C.html
close:3:C.html
其中 C.html 就没有被关闭,明明log2都有log出它。
B.html 是 A.html 通过plus.webview.create方法产生的高度比 A.html 低的 webview,
B.html show()出来之后 B.html 通过plus.webview.create方法产生高度为 C.html, C.html 高度为100px
之后C.html 没有调用show方法
2 个回复
xdhgjdsjdcgrdh (作者)
找到原因了,是因为执行上面JS的webview比它之后的webview提前关闭了,它之后的webview就没被关闭。所以解决方法是执行上面JS的webview放到最后才关闭
HOVER翱翔
确实是这个问题,android没问题,就是ios,我打log,捕捉异常,倒序close各种方法都测试了,不行,来看了下,确实是这个问题,现在android和ios都没有问题了!非常感谢!!!