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

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