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

点击浏览器返回按钮时,焦点位置的决定因素探究

点击浏览器返回按钮时,焦点位置由什么决定?

我了解到部分规则由HTML规范的History API决定,具体是history.scrollRestoration的取值:

  • "auto"
    用户代理负责在导航时恢复滚动位置。
  • "manual"
    由页面自行处理滚动位置恢复,用户代理不会自动尝试恢复。

有示例展示了"manual"的用法,但"auto"模式下的行为是否由浏览器(用户代理)的实现方式决定?如果是这样,那要让返回按钮的行为在各浏览器中保持一致,是不是必须采用"manual"模式?(前提是浏览器已正确实现History API)下面的实际测试案例似乎能印证这一点。


上下文

我们正在排查一个主要供屏幕阅读器用户(使用JAWS)的遗留Web应用,以下是测试的统一行为:

  1. 点击长<table>中的客户链接,示例表格如下:
分配日期客户备注讲师分配人状态
2024年4月12日Doe, JohnblablaGoodworker, SallyBigboss, Paige已分配
  1. 在客户页面点击一个按钮,代码示例:
<input type="button"
       aria-label="Plans"
       onclick="location.href='/plans/1234';"
       value="Plans"
>
  1. 点击浏览器返回按钮,焦点表现:
  • JAWS:聚焦到步骤2中的「Plans」按钮
  • Chrome:聚焦到<body>,按TAB键会跳转到页面第一个链接,而非之前点击的按钮
  • Firefox:聚焦到步骤2中的「Plans」按钮
  1. 再次点击浏览器返回按钮,焦点表现:
  • JAWS:聚焦到<body>;按TAB键会跳转到之前用来导航离开的链接
  • Chrome:聚焦到<body>;按TAB键会跳转到下一行的链接
  • Firefox:聚焦到步骤1中用来导航离开页面的链接

补充说明:

  • Chrome的焦点状态通过开发者工具的焦点跟踪功能确认
  • Firefox的焦点状态通过返回后在控制台执行document.activeElement确认
  • 测试发现,我们的应用中Firefox会保留滚动信息,但在测试其他页面时结果不一致:比如搜索到的第一个链接点击返回后焦点会落在该锚点,而另一个fetch()链接点击返回后焦点会落在<body>

更新

  • Chrome:已提交相关问题,被确认为bug
  • Firefox:已在官方聊天渠道询问该问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:31:28