ARIA: application 角色

application 角色向辅助技术表明,一个元素及其所有子元素应被视为类似于桌面应用程序,不应使用传统的 HTML 解释技术。此角色仅应用于定义高度动态且类似桌面的 Web 应用程序。大多数移动和桌面 Web 应用程序被视为此类应用程序。

html
<div role="application" aria-label="…">…</div>

通过指定 application 角色,表明此 div 元素及其所有后代元素都应被视为桌面应用程序的一部分。

描述

application 文档结构角色,向辅助技术表明 Web 内容的这部分包含不符合任何其他已知 HTML 元素或 WAI-ARIA 小部件的元素。应暂停对 HTML 结构和小部件的任何特殊解释,并将完全控制权交给浏览器和 Web 应用程序来处理鼠标、键盘或触摸交互。

在此模式下,Web 作者完全负责处理所有键盘输入、焦点管理和其他交互,并且不能假设辅助技术会在其端进行任何处理。

如果被 application 角色包围的 Web 应用程序包含应该被视为普通 Web 内容的部分,则应使用 documentarticle 角色来包含此类内容。

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 进行管理。

应用程序必须处理 TabSpaceEnter 键以及 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 内容阅读机制将不适用。

另见