标准 · WCAG 2.2

SC 3.2.1 级别 A WCAG 2.0

获得焦点时

当任何用户界面组件获得焦点时,不得触发上下文变化——不得自动导航至新页面、打开新窗口或大幅重排页面内容。焦点用于定位,而非触发操作。

成功准则的要求

获得焦点不得触发”上下文变化”。WCAG 将上下文变化定义为:导航至新页面、打开新窗口、将焦点移动至其他组件,或对页面内容进行重大重排。焦点相当于键盘操作中将鼠标悬停在某个元素上——它必须保持被动状态。

用户必须通过明确的激活操作来驱动上下文变化:按下按钮、在链接上按 Enter 键、提交表单。

如何满足该准则

  • 切勿在 focus 事件处理器中调用 window.openlocation.href = …form.submit()
  • 焦点触发的工具提示和小型展开内容是允许的——它们不构成上下文变化;而重大内容替换则属于上下文变化。
  • 对于自动完成建议,将焦点移动至某个选项不违反本成功准则,前提是建议列表本身是预期行为。
  • 若必须在元素获得焦点时显示额外的界面元素(如输入帮助文本),应将其放置在相邻位置且不造成干扰。
  • 使用键盘进行测试:用 Tab 键逐一遍历每个可交互元素。任何在获得焦点时发生”跳转”或自动提交的情况均属失败。

常见失败情形

  • 下拉菜单在某个选项通过方向键获得焦点时自动提交。
  • 用 Tab 聚焦至某个链接时,onfocus 处理器触发立即导航。
  • 日期选择器在下一个字段获得焦点的瞬间即行关闭,用户尚未完成交互。
  • 登录表单在密码字段从密码管理器获得焦点时自动提交。

为何重要

键盘用户通过顺序移动焦点来浏览页面。若焦点触发上下文变化,用户会突然跳转到并非其意图前往的位置——对于屏幕阅读器用户而言,这尤为令人迷失,因为朗读队列会骤然切换。规则很简单:焦点用于定位,激活才是行动。