收藏
回答

微信浏览器 8.0.67+ 版本中,使用 replace 跳转的中间页,安卓物理返回键出现历史记录

因为h5页面需要进行联登,所以需要中间页,中间页使用replace方法跳转到目标页,安卓系统中点击左上角的返回按钮时,仍然返回到中间页,导致又从中间页跳转至目标页,使得安卓用户效果为返回死循环,返回不出去,除非快速返回两次。在微信的8.0.64版本可以正常返回,而8.0.67和68版本返回失败

  • 涉及平台:Android 系统
  • 微信版本:8.0.67 和 8.0.68 版本出现,8.0.64 版本正常。
  • 问题页面:一个用于联登的 H5 中间页。
  • 复现步骤:
  1. 用户在小程序中点击进入中间页A。
  2. 中间页A完成逻辑(如获取code)后,使用 window.location.replace(‘目标页B’) 方法导航到 目标页B。意图是让A不留在历史记录中。
  3. 在目标页B,用户点击安卓设备的物理返回键或微信左上角的 “< 返回” 按钮。
  • 预期行为(8.0.64版本):
  • 点击返回后,应直接跳转回 最初的来源小程序页面(因为中间页A已被 replace 替换,理论上不在历史栈中)。
  • 实际行为(8.0.67/68版本):
  • 点击返回后,页面回到了中间页A。
  • 中间页A的代码立即再次执行,并再次 replace 到目标页B。
  • 用户再次点击返回,又回到A,再跳B,形成“返回-跳转”的死循环。
  • 用户需要极快地连续点击两次返回,才有可能跳出循环,返回小程序原生页面。


回答关注问题邀请回答
收藏

2 个回答

  • hello world
    hello world
    01-26

    我这里,非微信也出现了一样的情况

    01-26
    有用
    回复 1
    • mm
      mm
      01-27
      请问找到办法解决了吗?目前我看同域名的可以使用history.replaceSate方法+location.reload(),但是我的中间页和目标页域名不一致
      01-27
      回复
  • 智能回答 智能回答 本次回答由AI生成
    01-26
    有用
登录 后发表内容