我有这段代码:
window.history.pushState(newUrl, "", newUrl);
我的问题是,如何确保在执行pushState时,浏览器后退按钮将正常运行,换句话说应该“返回”?
(不使用jquery)
答案 0 :(得分:3)
后退按钮的正常行为是浏览器返回上一个文档,但是当您使用pushState
时,不是以前的文档。< / p>
pushState
的目的是在更新网址时将浏览器保留在相同的文档上。这伴随着JavaScript应用的DOM更改。
转到新页面的模拟。
要使后退按钮看起来有效,您需要编写一个匹配的模拟进入上一页。
您可以通过收听a popstate
event来完成此操作。
Page <span id="p">1</span>
<button>Next</button>
<script>
document.querySelector("button").addEventListener("click", function () {
document.getElementById('p').textContent++;
history.pushState({}, "", "/" + document.getElementById('p').textContent);
});
addEventListener("popstate", function (e) {
document.getElementById('p').textContent--;
e.preventDefault();
});
</script>
答案 1 :(得分:1)
推送是为了推动...添加
你应该去history.back()
如果你想popState - 在窗口发出popstate
事件或做history.replaceState()
如果您要取消已评论的活动: 我的回答就是诀窍 https://stackoverflow.com/a/44553087/5694206