js如何删除前两条的history历史记录?

项目中有个需求是
问卷列表页A.html(未填写的问卷在列表中),点击其中一个
进入问卷详细页B.html,填写后提交后返回列表页A(A页面需要刷新数据,之前填写的就不在列表)
我提交成功返回上一个页面用的是

history.go(-1)    //发现在安卓手机返回后并没有刷新,网上说判断‘pageshow’也不起作用

我就用了

location.href = document.referrer;

数据是刷新了,但是用户从A进入B提交后返回A页面,用户再“点返回”却到了B(应该是返回到首页)页面,这样操作很不友好(尤其是填写多个问卷的时候)
我试着改成

location.replace(document.referrer)

但是还得多返回一次,因为历史记录里多了两条。
我现在能想到的方法是跳转返回的路径后,删除前两条的history历史记录,这样用js改怎么写?
或者有更好的方法吗?

clipboard.png

阅读 11.5k
2 个回答

a=>b=>a都用这个location.replace不就可以了吗?

然后监听页面状态也是一种比较好的办法。里面判断performance.navigation.type用于区分回退还是后台加载

你说的没效果,可以提供一下完整的代码。或者说页面地址吗?

在B页面提交表单的回调中调用 window.history.back() 即可。

已经验证过:
A => B => C

1.在C不提交表单,点击返回正常返回到B。
2.在C提交表单,点击确定调用 back 返回到B,不会生成 history,则再次点击返回返回到A

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题