为了账号安全,请及时绑定邮箱和手机立即绑定

location.href历史记录问题

location.href历史记录问题

哔哔one 2018-10-12 10:11:35
a页面初始化的时候 location.href = ‘b页面’这种情况下浏览器是没有a这条历史记录的如果 在a页面 延迟调用location.href = ‘b页面’ 就有a的历史记录
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

正常情况下,location.href 会生成一条新的历史记录,location.replace 会替换当前历史记录。但 location.href 并不必然导致一条新的历史记录的产生,在当前页面的 onload 事件发起之前,location.href 也是替换当前历史记录,浏览器的实现可以参见 NavigationScheduler::MustReplaceCurrentItem

如果你希望确保 location.href 生成一条新的历史记录,建议监听 onload 事件并起定时器执行 location.href,应该与你当前实现的做法类似。想要更早跳转的话就只能按照 @orangexc 的做法,先 pushState 再跳转,跳转建议用 location.replace

我不太清楚你这样做的需求是什么,如果 a 页面只是作为跳转页的话,不应该保存历史记录才对,而且过早跳转又保存 a 的历史记录的话,a 页面其实是不完整的,在有前进后退缓存的浏览器上会造成后退 a 页面白屏等问题,在无前进后退缓存的浏览器上会陷入 b 页面后退 a 页面又调回 b 页面的死循环,必须连续快速后退 2 次才能退出。


查看完整回答
1 反对 回复 2018-11-06
  • 1 回答
  • 0 关注
  • 2145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信