使用pushState时如何"browser back"?

How to "browser back" when using pushState?

我有这个代码:

window.history.pushState(newUrl, "", newUrl);

我的问题是,如何确保在执行 pushState 时,浏览器后退按钮将正常运行,或者换句话说应该 "back"?

(不使用 jQUery)

push 用于推送... 添加


你应该去 history.back()

如果你想 popState - 在 window 上发出 popstate 事件或做 history.replaceState()


如果您想取消评论活动: 我的回答会成功

后退按钮的正常行为是让浏览器返回到上一个文档,但是当您使用 pushState 时,没有 上一个文档文件.

pushState 的要点是在更新 URL 时保持浏览器在 相同 文档上。这伴随着 DOM 应用 JavaScript 的变化。

它是模拟进入新页面。

要使后退按钮正常工作,您需要编写一个匹配的转到上一页的模拟。

您可以通过侦听 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>