ARIA: application 角色
application
角色向辅助技术表明,一个元素及其所有子元素应被视为类似于桌面应用程序,不应使用传统的 HTML 解释技术。此角色仅应用于定义高度动态且类似桌面的 Web 应用程序。大多数移动和桌面 Web 应用程序不被视为此类应用程序。
<div role="application" aria-label="…">…</div>
通过指定 application
角色,表明此 div
元素及其所有后代元素都应被视为桌面应用程序的一部分。
描述
application
文档结构角色,向辅助技术表明 Web 内容的这部分包含不符合任何其他已知 HTML 元素或 WAI-ARIA 小部件的元素。应暂停对 HTML 结构和小部件的任何特殊解释,并将完全控制权交给浏览器和 Web 应用程序来处理鼠标、键盘或触摸交互。
在此模式下,Web 作者完全负责处理所有键盘输入、焦点管理和其他交互,并且不能假设辅助技术会在其端进行任何处理。
如果被 application
角色包围的 Web 应用程序包含应该被视为普通 Web 内容的部分,则应使用 document
或 article
角色来包含此类内容。
Background
出于历史原因,尤其是在 Windows 上,屏幕阅读器和其他一些辅助技术(AT)在内容加载完成后,传统上会一次性捕获浏览器中的整个 Web 内容。AT 会构建自己的表示形式,以便视障用户能够以最易于理解的方式消费内容。这通常被称为虚拟文档、浏览模式或类似术语。文档被简化为单列视图。会生成一个键盘交互模型,该模型非常类似于文字处理器,用户可以逐行、逐句或逐段阅读。AT 会读取任何语义,如链接、标题、表单控件、表格、列表或图像。
此外,多年来已建立了一套所谓的快速导航键,允许视障用户通过特定元素类型来快速浏览页面。这些元素通常包括标题、表单字段、列表、表格、链接、图形或地标区域。
为了让这一切正常工作,AT 会拦截几乎所有的键盘输入并自行处理,不让任何输入传递给浏览器或其他用户代理。为了能够与 Web 页面进行交互,会识别一套标准的控件,当按下某个键(通常是 Enter 键)时,此模式将被关闭。屏幕阅读器模式,通常称为表单模式或焦点模式,会让所有键盘输入再次传递给浏览器。 Escape 是切换回浏览模式最常见的方式,但在特定 application
部分内,某些屏幕阅读器可能需要其他按键才能专门退出此模式。例如,JAWS 的 NUMPAD PLUS。
application
角色旨在为那些不属于标准控件集的小部件提供一种方式,使其能够被使用浏览和焦点模式与 Web 内容交互的 AT 直接访问。大多数常用小部件都有预期的键盘交互行为。因此,Web 作者创建的自定义键盘体验会造成令人困惑的体验。
关联的 WAI-ARIA 角色、状态和属性
document
,article
-
用于指示应用程序中应视为普通 Web 内容的部分
aria-activedescendant
-
用于管理应用程序内部的焦点。
aria-label
-
用于提供应用程序的名称或正在暴露的小部件的用途。
aria-describedby
-
用于引用包含有关导航或操作此元素的其他说明的元素的 ID。
aria-roledescription
-
用于为屏幕阅读器提供更具描述性的应用程序角色文本。此文本应本地化。
aria-disabled
-
指示元素可见但已禁用
aria-errormessage
-
指向提供元素错误消息的元素的引用
aria-expanded
-
如果设置为
true
,则此元素拥有或控制的分组元素已展开,如果为false
,则已折叠。 aria-haspopup
-
指示存在一个可以由该元素触发的弹出窗口,例如菜单或对话框。
键盘交互
键盘交互完全由 Web 作者控制,并且可以是与所实现的小部件相关的任何内容。例如,在幻灯片应用程序中,可以创建一个小部件,使用箭头键在幻灯片上定位元素,并通过 ARIA 实时区域提供音频反馈,以传达位置和与其他对象的重叠状态。焦点通过 aria-activedescendant 进行管理。
应用程序必须处理 Tab、Space 和 Enter 键以及 Escape 键。唯一的例外是,如果焦点设置在应用程序内的标准控件上,该控件支持从浏览器进行的键盘导航,例如 input 元素。
所需的 JavaScript 功能
- keyPress
-
用于处理键盘输入和控制焦点
- Click, Touch
-
也请根据您的小部件适当处理
- 更改属性值
-
aria-activedescendant
用于管理应用程序容器内的焦点。响应于改变焦点或交互点的键盘或其他应用程序事件而设置。
注意: application
角色没有相关的 HTML 小部件,因此它是完全自由形式的。应用程序的作者必须承担全部责任,确保用户不会被困在用户无法退出的焦点陷阱中。必须处理交互的所有方面,包括返回到页面上其他部分的常规 Web 内容。请明智地、谨慎地使用,并记住进行测试!
示例
一些使用或曾经正确使用 application 角色的著名 Web 应用程序是
- Google Docs、Sheets 和 Slides
- CKEditor 和 TinyMCE WYSIWYG Web 编辑器,例如 Mozilla Developer Network 上使用的编辑器
- Gmail 的部分内容
可访问性考虑
不当使用 application
角色可能会无意中剥夺用户对网页信息的访问权限,因此在使用时请务必格外小心。请仔细考虑您是否真的需要它,而不是能否仅使用一组其他已知的小部件来完成相同的任务。
如果使用,application
角色应添加到尽可能低的公共容器上,而不是添加到 <body>
元素上,例如。此外,请务必使用辅助技术测试您编写的内容,以验证其是否按预期工作。
规范
规范 |
---|
无障碍富互联网应用程序 (WAI-ARIA) # application |
优先级顺序
应用 application
角色将导致此元素及其所有后代元素被视为应用程序内容,而不是 Web 内容。辅助技术可能拥有的任何 Web 内容阅读机制将不适用。
另见
- 如果您使用 WAI-ARIA 角色
application
,请明智地使用 - Marco Zehe 的博客文章 - 使用 ARIA
application
角色 - Léonie Watson 撰写