本文首发于个人博客 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)