今年年初,Chrome 在 Interop 2024 的无障碍功能重点领域通过了 88.2% 的测试。2024 年 6 月,我们率先实现了所有测试均通过。本文介绍了为实现这一目标所做的努力。
无障碍功能重点领域包含哪些内容?
与 Interop 2024 中的每个重点领域一样,无障碍领域由一组针对所选功能的 Web 平台测试定义。Interop 2024 中的测试旨在确保所有浏览器以相同的方式创建无障碍名称和计算角色。
无障碍名称可传达 HTML 元素的用途或意图。这有助于用户了解元素的用途以及如何与其互动。accname 规范定义了浏览器如何为元素创建此可访问名称字符串。ARIA 规范包含有关如何计算此名称的演示。
元素的计算角色是一个字符串,表示浏览器引擎计算出的元素角色。这主要用于开发者工具,例如 WebDriver 函数 getComputedRole
,以实现互操作性测试。
Chrome 团队需要做些什么?
我们需要完成两个较大的工作领域:更改角色与通用角色的映射,以及移除已废弃的角色。然后,我们还需要实现一些其他较小的修复程序和功能。除了 Chrome 团队完成的以下工作之外,我们还与 Microsoft 合作,针对他们提交到 Chromium 的无障碍功能重点领域修复程序进行了协作。
将某些角色的映射更改为通用角色
将映射更改为通用角色会从元素中移除无障碍语义。通用元素不会为无障碍功能树提供值,因此不会包含在树中。这有助于提升性能,并使树更小,更易于为辅助技术解析。以下角色已更改为通用角色。
- 范围限定为
<main>
的<header>
或分区内容元素(<article>
、<aside>
、<nav>
或<section>
)。 - 范围限定为
<main>
或分区内容元素(<article>
、<aside>
、<nav>
或<section>
)的<footer>
。 - 分区内容元素(
<article>
、<aside>
、<nav>
或<section>
)内的<aside>
没有可访问的名称。 <section>
缺少可访问的名称。- 孤立的列表项 (
<li>
)。
对于前四个项目符号,这些元素通常会映射到地图注点角色。如果网页上的地图注点过多,可能会使网页难以浏览,因此这项更改有助于减少多余的地图注点,使网页更易于浏览。最后一个项通常表示页面开发者犯了错误,列表项应始终位于列表中,因此系统会为孤立项分配通用角色。
移除已废弃的角色
我们已废弃 directory
角色,并将其映射到列表角色。ARIA 1.2 弃用了 directory
角色。规范说明,该角色相当于 list
角色,并且开发者应使用 list
。为了保持使用 directory
的旧内容的语义,现在在 Chrome 中将其映射到 list
。
其他修复
我们添加了对 gridcell
角色的支持。这个新角色可以更明确地区分 gridcell
和 cell
。gridcell
可聚焦、可编辑和可选择,这与 cell
不同。
我们添加了后备角色计算功能。以前,我们不会检查回退角色,因此如果第一个角色无效,我们会使用其他角色,这与规范中详述的内容不符。
某些角色只有在正确的上下文中才有效,因此我们添加了针对无效角色使用情况的检查,如下所示:
row
角色应位于table
、grid
、rowgroup
或treegrid
内。rowgroup
角色应位于table
、grid
、tree
或treegrid
内。listitem
角色应位于list
内。
如果角色无效,Chrome 现在会使用其他信息(例如 HTML 元素)来计算替代角色。
我们将 thead
和 tfooter
标记为包含在无障碍树中。以前,这些文件会被标记为忽略,但仍会包含在树中。现在,辅助技术可以解析表格标题和表格页脚。
虽然大多数开发者可能看不到这些更改,但所有浏览器都在努力确保这些功能以相同的方式运行,我们也确保在所有位置以相同的方式显示不同的角色。