我发现在这些版本的 Safari 和 Chrome 中,在没有用户输入的情况下将新的状态值推送到浏览器历史记录中会出现意外行为。它将正确更新状态。您将能够使用浏览器
history
API 与更新后的状态进行交互。您将能够使用 cmd + 向左和向右的 MacOS 快捷方式在历史记录中向前和向后导航。
您将无法点击浏览器的“后退”按钮并让它返回到您加载的页面的初始 URL。长按“后退”按钮时,您将看到正确的历史记录。您将能够正确呼叫hsitory.back()
。
<!DOCTYPE html>
<html>
<body>
<script>
window.history.pushState({a:1 }, '', window.location.pathname + "?page=1");
</script>
<h1>Safari History Issue</h1>
</body>
</html>
如果您将此 html 作为索引文件加载到本地服务器上,您可以按照以下步骤重现此问题:
导航至 google.com
pushState()
之前的初始本地页面
pushState()
事件)而
onclick
,则不存在此问题。我想知道这些浏览器的最新版本中是否有一些未记录的安全更新导致了此问题?