我有一个网站,有一个叠加。我的问题是这样的。
history.pushState()
来改变相应的url。history.pushState(null, "Page 2", "/page/2")
然后我使用浏览器的重载按钮重新加载页面,这将迫使我的应用程序转到实际的url(第2页),我之前使用的 history.pushState()
现在,当我点击浏览器返回按钮时,我希望回到第1页,但除了浏览器将网址和标题改为第1页的以外,什么都没有发生--网站本身没有重新加载。
我不知道为什么会发生这种情况。我有一个简单的黑客,可以用,但是感觉超级脏。
window.addEventListener("popstate", function(e) {
let title = document.title
setTimeout(() => {
if (document.title === title) {
location.reload()
}
}, 100)
})
这个黑客的工作原理是,虽然浏览器在返回时改变了标题,但文档的标题仍然不变,因为网站没有刷新。所以我就强制刷新了。
history.pushState改变了url,但没有重载页面,你有没有用location.href试过?
P.D.我假设你不是在单页应用中。如果你是,不要使用location.href,否则你会强制进行不必要的刷新。