使用location.href跳转为什么没有了历史记录
本文首发于个人博客 Cyy’s Blog
转载请注明出处 https://cyyjs.top/blog/5e8ed8bab1439d04e7ac0d14
有个常见的场景,是检查登录状态,如果没有登录跳转登录页,登录成功后再跳回来。
在开发中使用location.href
跳转,登录成功后使用history.back()
,发现没有返回之前的页面,经过排查,发现历史记录里没有我们第一次访问的页面。
# 原因
正常情况下,location.href
会生成一条新的历史记录;但并不是所有的location.href
都会产生一条新的历史记录,在当前页面的 onload
事件发起之前location.href
会替换当前的历史记录,类似于location.replace
。
# 解决办法
1、监听onload
事件,在onload
之后跳转
2、如果不想等待onload
完成,可以手动插入历史记录,然后用location.replace
跳转
history.pushState(null, document.title, location.href)
location.replace(url)
