You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Safari16.*与Chrome107.0.5304中history.pushState()不受后退按钮正常识别?

无用户交互触发的history.pushState()在特定浏览器版本中的异常行为

现象总结

在Safari 16.*和Chrome 107.0.5304版本中,非用户交互触发的history.pushState()存在以下异常表现:

  • 状态能正常更新,通过浏览器History API或MacOS的cmd+左右方向键可正常进行历史导航
  • 点击浏览器后退按钮时,无法返回页面加载时的初始URL,会直接跳转到更早的外部页面(如google.com)
  • 长按后退按钮能看到完整且正确的历史记录,直接调用history.back()方法也能正常工作
  • 若pushState()由用户操作(如onclick事件)触发,则无上述问题,功能完全正常

示例代码

<!DOCTYPE html>
<html>
<body>
    <script>
        window.history.pushState({a:1 }, '', window.location.pathname + "?page=1");
    </script>
    <h1>Safari History Issue</h1>
</body>
</html>

复现步骤

  • 先访问外部页面(如google.com)
  • 再访问部署在本地服务器上的上述测试页面
  • 页面加载后自动执行pushState(),URL变为?page=1
  • 长按浏览器后退按钮,可见历史记录包含:带参数的当前页面、无参数的初始本地页面、google.com
  • 点击后退按钮,会直接跳转到google.com,而非预期的无参数初始本地页面

推测

该异常大概率是这些浏览器新版本中未公开的安全更新导致的限制,可能是为了防止页面未经用户许可随意篡改历史记录,干扰正常的浏览导航逻辑。

内容的提问来源于stack exchange,提问作者Rinato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:40:22