收藏
回答

web-view 诡异行为

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug web-view 客户端 6.5.3 2.0.0

- 当前 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 第一个页面时不能直接显示回退...问题太多。。。


最后一次编辑于  2018-12-04
回答关注问题邀请回答
收藏

1 个回答

  • 王翊夫if
    王翊夫if
    2018-12-05

    iOS 还是安卓?

    2018-12-05
    赞同
    回复 9
    • 清源
      清源
      2018-12-05

      iOS、模拟器都有这个问题。安卓应该也有,尚未验证

      2018-12-05
      回复
    • 王翊夫if
      王翊夫if
      2018-12-05回复清源

      我这边看看

      2018-12-05
      回复
    • 清源
      清源
      2018-12-05回复王翊夫if


      可以扫码这个重现。

      我们现在做了个特殊处理,第一个页面里如果发现 history.length != 1,则自动调用 navigateBack 强制回到第一个原生页面

      2018-12-05
      回复
    • 王翊夫if
      王翊夫if
      2018-12-05回复清源

      嗯,从表现上看,原因是点击返回是做 web-view 组件的回退或者做原生小程序页面的 navigateBack 是根据 web-view 当前 window.history 是否 > 1的。

      2018-12-05
      回复
    • 王翊夫if
      王翊夫if
      2018-12-05回复王翊夫if

      这边看到 B.n  goBack后, window.history  length=3,要不让前端同学自查一下逻辑?


      2018-12-05
      回复
    查看更多(4)