- 当前 Bug 的表现(可附上截图)
众所周知,当只有一个小程序页面时,如果这个页面内嵌了 web-view,那么不论 web-view 里怎么跳转,都不显示回退按钮。
所以通常需要新开一个页面,来显示回退按钮。
现在有两个原生页面,A、B。
如果从 A->B,那么这时在B中点击回退会回到 A,没有问题。
但是如果 B 里面内嵌两个html页面:B.m,B.n。如果从 A navigateTo B.m,然后再跳到 B.n,此时点击回退应该回到 B.m,再次点击应该返回到上一个原生小程序页面。
但是诡异的是,B.m 再点击返回时,并没有返回上级原生小程序页面,而是在当前 web-view(B,第二个)新增了一条历史记录...这是再点击的话会退回到 B.m,如此循环... B.m <-> A..
- 预期表现
web-view 最后一个 html 页面时,再次返回应该 pop 到上一个小程序页面。
为啥小程序 webview 第一个页面时不能直接显示回退...问题太多。。。
iOS 还是安卓?
iOS、模拟器都有这个问题。安卓应该也有,尚未验证
我这边看看
可以扫码这个重现。
我们现在做了个特殊处理,第一个页面里如果发现 history.length != 1,则自动调用 navigateBack 强制回到第一个原生页面
嗯,从表现上看,原因是点击返回是做 web-view 组件的回退或者做原生小程序页面的 navigateBack 是根据 web-view 当前 window.history 是否 > 1的。
这边看到 B.n goBack后, window.history length=3,要不让前端同学自查一下逻辑?