发布于 2026-01-06 7 阅读
0

检查 Pull Request 的可访问性时,我会考虑以下 5 件事。

检查 Pull Request 的可访问性时,我会考虑以下 5 件事。

(图片来自Unsplash用户Cookie the Pom

开发可靠、易用的应用程序确实需要整个团队的努力,而我以前很少写到的是,当我亲自编写代码时,我是如何处理这些问题的。

这绝非一份完整的无障碍功能实现或测试指南,但希望能为审核 Pull Request 时提供一些思路 🙂 欢迎在评论区留下您的任何技巧、建议或问题!

如果您想直接跳转到某个章节:

  1. 这个功能到底是什么?
  2. 初步用斧头检查
  3. 键盘操作性
  4. 屏幕阅读器检查
  5. 关于焦点管理和动态显示内容的思考

1. 这到底是什么功能?🤔

我发现退一步思考我们正在尝试引入/重构的 UI 模式非常有用,并查看WAI ARIA 创作实践,以提醒自己这种 UI 模式应该如何运作。

这些文档对于开发来说也非常好,值得收藏,因为它们列出了预期行为、aria 属性,并链接到示例实现。

退后一步,问问自己“这是什么?”也能帮助你发现div用更语义化的替代词替换“s”的机会。我已经数不清有多少次灵光一闪,意识到“哦等等,这其实是[此处插入一个显而易见的东西]!”

2. 用斧头进行初步检查🪓

Axe浏览器扩展程序可以帮助我们捕捉很多唾手可得的信息,例如颜色对比度、缺失的地标或标签。

如果该功能可以处于多种状态,我会尝试在每种状态下重新运行 axe (例如,下拉菜单的折叠状态与展开状态),因为 axe 只能检查当前的 DOM。

3. 键盘操作性👩🏻‍💻

注意:如果您使用的是 Mac 和/或 Safari 浏览器,请确保您的设置允许使用 Tab 键切换到交互元素。请参阅macOS 中的浏览器键盘导航。

所有功能都应仅通过键盘即可操作,包括:

  • Tab顺序逐个浏览交互元素(例如,通常是从上到下,从左到右)。
  • 努力Shift + Tab倒退着穿过这些元素
  • 当前聚焦的元素应该清晰可见(例如,带有聚焦轮廓)。
  • 您应该能够按照WAI ARIA 创作实践中的约定与可聚焦元素进行交互。例如,使用 激活链接Enter,使用 浏览组合框建议Up Arrow/Down Arrow
  • 能够显示原本会在鼠标悬停时触发的内容(例如,鼠标悬停时显示辅助文本的工具提示)

额外提示:隐形的注意力问题

如果你在调试焦点不可见的问题时遇到困难,可以在控制台中添加以下代码,以便在焦点元素发生变化时记录下来:

document.addEventListener('focusin', () => console.log(document.activeElement))
Enter fullscreen mode Exit fullscreen mode

4. 屏幕阅读器检查🤖

我曾多次被问到“你是否总是使用屏幕阅读器进行检查?”,而我的回答是“不”。

我个人认为,在以下情况下必须进行屏幕阅读器检查:

  • 我们引入了一项新的交互功能(而非内容变更):事物会动态更新/出现/消失。
  • 任何aria属性的更改或新增:这些仅通过辅助技术显示,因此,如果我们不使用屏幕阅读器进行检查,实际上就等于没有进行任何检查。

一些初始设置

我通常使用 VoiceOver 和 Safari 来进行屏幕阅读器测试。这主要是因为 VoiceOver 是 Mac 的默认屏幕阅读器,而且与 Safari 搭配使用效果最佳(如果您尝试与其他浏览器一起使用,您会注意到一些错误/异常情况)。

如果你使用的是Mac电脑,我有一篇帖子提供了一些初始设置说明:

如果您不使用 Mac,我建议您使用NVDA和 Firefox/Chrome,纯粹是因为 NVDA 是免费下载的,而且使用非常广泛(查看最新的屏幕阅读器用户调查)。

切换 VoiceOver 的开启/关闭

如果你的键盘顶部一排是功能键,你可以用它打开和关闭 VoiceOver Cmd + F5

如果没有功能键,您可以快速连续按三次 Touch ID 按钮,调出辅助功能选项,您可以在其中选中/取消选中“启用 VoiceOver”。

转子

我通常使用 VoiceOver Rotor(通过快捷键打开)来启动屏幕阅读器检查ctrl + option + u——它是一个交互式菜单,按类型列出不同的元素(例如地标、链接、表单控件):

开发者主屏幕截图,VoiceOver 转盘已打开。可以看到链接列表。

按左右箭头键可在不同的菜单中移动,快速查看页面上的相关地标和元素名称。在上面的示例中,您可以很快发现“首页”链接被错误地命名了两次!

要跳转到特定元素/部分,请使用上下箭头突出显示并Enter选择。

如果你觉得转子没有用,完全可以不用它。我只是觉得它比翻阅很多页才能找到我感兴趣的部分要方便得多。

无障碍名称

Axe 通常可以帮助标记这类问题,但当我在使用屏幕阅读器浏览某个功能时,我往往会特别留意以下元素:

  • 没有可访问的名称(例如,我们使用了一个没有 aria 标签的图标按钮)
  • 无障碍名称不够清晰(例如“点击这里”——点击这里做什么?)
  • 辅助功能名称重复出现(例如,很多“切换下拉菜单”——到底是哪个下拉菜单?)

额外提示:关闭旁白

有时,在浏览界面时,听到各种语音播报可能会有点烦人,尤其是在调试某个特定部分时。您可以按一下按键来静音任何正在进行的 VoiceOver 播报ctrl🙂

5. 关于焦点管理和动态内容呈现的思考 ✨

我通常会特别关注任何涉及内容动态出现/消失的功能——例如:下拉菜单、警告横幅、模态框。

我主要会考虑以下几点:

  1. 低视力用户如何知道内容已经出现/消失?屏幕阅读器会播报任何信息吗?
  2. 如果新内容包含任何可聚焦的元素(例如链接),我该如何点击它?如果我需要点击Tab20 次,那肯定有问题。
  3. 如果我的键盘焦点原本在某个内容上,而该内容现在已经消失了——那么焦点现在在哪里?

通常aria需要使用 JavaScript 添加一些属性或手动焦点管理功能,才能使这类组件易于访问。同样,您通常可以在WAI ARIA 创作实践中找到所需的内容。

文章来源:https://dev.to/s_aitchison/5-things-im-thinking-about-when-i-check-a-pull-request-for-accessibility-3gmo