历史.推送状态。加载实际推送的状态后,回到历史中去。

问题描述 投票:0回答:1

我有一个网站,有一个叠加。我的问题是这样的。

  1. 我在第1页,点击一个文本,打开一个叠加使用JS,也使用了 history.pushState() 来改变相应的url。

history.pushState(null, "Page 2", "/page/2")

  1. 然后我使用浏览器的重载按钮重新加载页面,这将迫使我的应用程序转到实际的url(第2页),我之前使用的 history.pushState()

  2. 现在,当我点击浏览器返回按钮时,我希望回到第1页,但除了浏览器将网址和标题改为第1页的以外,什么都没有发生--网站本身没有重新加载。

我不知道为什么会发生这种情况。我有一个简单的黑客,可以用,但是感觉超级脏。

window.addEventListener("popstate", function(e) {
            let title = document.title
            setTimeout(() => {
                if (document.title === title) {
                    location.reload()
                }
            }, 100)
        })

这个黑客的工作原理是,虽然浏览器在返回时改变了标题,但文档的标题仍然不变,因为网站没有刷新。所以我就强制刷新了。

javascript browser-history html5-history
1个回答
0
投票

history.pushState改变了url,但没有重载页面,你有没有用location.href试过?

P.D.我假设你不是在单页应用中。如果你是,不要使用location.href,否则你会强制进行不必要的刷新。

© www.soinside.com 2019 - 2024. All rights reserved.