window.location.assign(url) : 加载 URL 指定的新的 HTML 文档。 就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。
window.location.replace(url) : 通过加载 URL 指定的文档来替换当前文档 ,这个方法是替换当前窗口页面,前后两个页面共用一个
窗口,所以是没有后退返回上一页的
<body>
<button onclick="location.assign('http://www.baidu.com')">2222</button>
<script>
location.assign('http://www.baidu.com')
</script>
</body>
assign理应跳转后会出现后退按钮的,如果点击按钮,执行js,那么的确会有后退按钮,但是如果不是通过按钮跳转,而是进入页面后就执行一段js,那么浏览器就无法后退了。其实不仅仅是location.assign,location.href 也有这样的现象。
感觉可能和浏览器把当前 state
放入 history 中的时机有关,加个 setTimeout
0 即可正常出现后退按钮。