核心可访问性 API 映射 1.2

W3C 候选推荐草案

关于本文档的更多详细信息
此版本:
https://www.w3.org/TR/2026/CRD-core-aam-1.2-20260430/
最新发布版本:
https://www.w3.org/TR/core-aam-1.2/
最新编辑草案:
https://w3c.github.io/core-aam/
历史:
https://www.w3.org/standards/history/core-aam-1.2/
提交历史
实现报告:
https://w3c.github.io/test-results/core-aam-1.2/
最新推荐标准:
https://www.w3.org/TR/core-aam-1.1/
编辑:
Valerie Young (Igalia, S.L.)
(W3C 特邀专家)
前任编辑:
Alexander Surkov (Igalia, S.L.)(编辑至 2025 年 8 月)
Joanmarie Diggs (Igalia, S.L.)(编辑至 2022 年 10 月)
Richard Schwerdtfeger (Knowbility)(编辑至 2017 年 10 月)
Joseph Scheuhammer (Inclusive Design Research Centre, OCAD University)(编辑至 2017 年 5 月)
Andi Snow-Weaver (IBM)(编辑至 2012 年 12 月)
Aaron Leventhal (IBM)(编辑至 2009 年 1 月)
Michael Cooper (W3C)(编辑至 2023 年 7 月)
平台映射维护者:
Benjamin Beaudry (Microsoft Corp.) (UIA)
James Craig (Apple, Inc.) (AX API)
Joanmarie Diggs (Igalia, S.L.) (ATK / AT-SPI)
Alexander Surkov (Igalia, S.L.) (MSAA, IAccessible2)
David Tseng (Google LLC) (Android Accessibility API)
反馈:
GitHub w3c/core-aam (拉取 请求, 新议题, 开放议题)

摘要

本文档描述用户 代理应如何向可访问性 API暴露 Web 内容语言的语义。这有助于残障用户使用 辅助技术获取信息并与之交互。记录 这些映射可促进由可访问性 API 实现的角色、状态、属性和事件的可互操作暴露,并有助于确保此信息以 符合作者意图的方式呈现。

本 Core Accessibility API Mappings 规范定义了适用于多种 内容技术的支持,包括通用键盘导航支持,以及通过 WAI-ARIA [WAI-ARIA-1.2] 在 Web 内容中提供的通用角色、状态和属性的映射。其他 Accessibility API Mappings 规范依赖并扩展此 Core 规范,以用于 特定技术,包括原生技术特性和 WAI-ARIA 扩展。本文档更新并最终将取代 Core Accessibility API Mappings 1.1 [CORE-AAM-1.1] W3C 推荐标准中的指南。它是 WAI-ARIA 概述中所述 WAI-ARIA 套件的一部分。

本文档的状态

本节描述本文档在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版可在 W3C 标准和草案 索引中找到。

Accessible Rich Internet Applications Working Group 征求对本规范任何方面的反馈。 提交反馈时,请结合配套文档的上下文考虑相关问题。若要评论,请W3C core-aam GitHub 仓库中提交议题。如果这 不可行,请发送电子邮件至 public-aria@w3.org评论归档)。文档的进行中更新可在公开可见的编辑草案中查看。

活规范 — 本文档作为活规范维护。有关 最新规范性版本,请访问 Core Accessibility API Mappings

本文档由 Accessible Rich Internet Applications Working Group 使用 推荐标准 轨道作为 候选推荐草案发布。

作为 候选推荐发布并不表示 W3C 及其成员认可。候选推荐草案 整合了自上一个候选推荐以来的更改,工作组打算将这些更改纳入 后续的候选推荐快照。

这是一份草案文档,随时可能被其他文档更新、替换或废弃。 除了作为进行中的工作之外,引用本文档是不适当的。

本文档由一个按照 W3C 专利 政策运行的小组制作。 W3C 维护一份 公开的任何专利披露列表, 这些披露与该小组的交付物有关;该页面还包括 披露专利的说明。实际知晓某项专利且认为该专利包含 必要权利要求的个人 必须按照 W3C 专利政策第 6 节披露相关信息。

本文档受 2025 年 8 月 18 日 W3C 流程文档约束。

1. 介绍

本节是非规范性的。

Core Accessibility API Mappings 规定 WAI-ARIA 角色状态属性应如何 由用户代理通过平台可访问性 API 暴露。它是用于定义和支持 WAI-ARIA 规范的一组资源的一部分, 其中包括以下文档:

有关 WAI-ARIA 的介绍,请参见 WAI-ARIA 概述

1.1 可访问性 API

可访问性 API 使得向辅助 技术传达关于用户界面的可访问性信息成为可能。此信息包括:

  1. 描述性属性(角色、名称、值、位置等)
  2. 瞬时状态(按下、聚焦等)
  3. 事件(文本已更改、按钮已被点击、复选框已切换)
  4. 用户可能执行的动作(点击、选中/切换、拖动等)
  5. 关系(父/子、描述/被描述对象、前一对象/后一对象等)
  6. 文本内容

本规范涵盖的可访问性 API 包括:

WAI-ARIA 1.0 用户代理实现 指南 包含了 [UIA-EXPRESS] 的映射,也称为 IAccessibleEx, 其已在 Microsoft Internet Explorer 8.0 - 11 中实现。强烈 鼓励新的实现改用 UI Automation

如果用户代理开发者需要使用其他可访问性 API 暴露信息,建议他们与 该 API 运行所在平台的开发者以及 该平台上的辅助技术开发者密切合作。

1.2 比较可访问性 API

出于各种技术和历史原因,可访问性 API 并非都以相同方式工作。在许多 情况下,它们各自如何向辅助技术命名或暴露 角色、状态和属性之间并不存在简单的一对一关系。以下小节描述其中一些 API 的若干区别性特征。

1.2.1 ATK/AT-SPI

MSAA、IAccessible2、UIAAX API 各自定义了一个 API,该 API 由暴露其内容和交互式组件信息的软件应用程序以及使用这些信息的辅助 技术共享。相反,Linux/GNOME 将该共享接口分离为 两个方面,每个方面由不同的可访问性 API 表示:ATKAT-SPI。

ATK 定义了一个由软件实现的接口, 用于暴露可访问性信息,而 AT-SPI 是一个桌面服务,用于从 活动应用程序收集可访问性信息并将其转发给其他感兴趣的应用程序,通常是辅助技术。

例如,GNOME GUI 工具包 [GTK] 为每个 部件(菜单、组合框、复选框等)实现 ATK 的 相关方面,以便 GTK 部件暴露关于自身的可访问性信息。 AT-SPI 随后从使用 GTK 构建的应用程序获取这些信息, 并使其可供相关方使用。

ATK 与实现者最相关,而 AT-SPI 与使用者相关。在映射 WAI-ARIA 角色、状态和属性的上下文中, 用户代理是实现者,并使用 ATK。 辅助技术是使用者,并使用 AT-SPI。

1.2.2 UIA(UI Automation)

UI Automation 将应用程序用户界面的每个元素表示为自动化元素。 自动化元素构成应用程序可访问性树的节点,可由自动化客户端 查询、遍历并与之交互。

UI Automation 中有几个核心概念:

  • 自动化元素 - 控件和某些应用程序内容表示为自动化元素。
  • 元素属性 - 自动化元素具有若干通用属性,以与框架无关的方式描述原生 框架元素特征,使所有自动化客户端都能理解。 访问元素属性值有几种方式,如下所述。
  • 控件模式 - 不同框架中的一些常见交互性在 UIA 中 表示为控件模式,使不同的自动化客户端能够使用通用的 编程接口与控件交互。
  • 事件 - 与其他可访问性 API 类似,自动化元素支持各种 事件,允许自动化提供程序就重要状态变化通知客户端。

所有自动化元素都继承自 IUIAutomationElement 接口,且所有 非特定于某个控件模式的属性都可以通过该 接口查询。访问 UI Automation 元素属性有几种方式:

  • 对当前值的直接属性访问器 - Current{PropertyName},例如 IUIAutomationElement::CurrentName 用于 Name 属性
  • 缓存属性访问器 - Cached{PropertyName},例如 IUIAutomationElement::CachedName 用于 Name 属性。在远程环境中使用 提供程序和客户端时,首选使用缓存 值。
  • GetCurrentPropertyValue,并传入与 该属性对应的 UIA Property ID 枚举值以获取当前值,例如 IUIAutomationElement::GetCurrentPropertyValue(UIA_NamePropertyId) 用于 Name 属性。
  • GetCachedPropertyValue,并传入与 该属性对应的 UIA Property ID 枚举值以获取缓存值,例如 IUIAutomationElement::GetCachedPropertyValue(UIA_NamePropertyId) 用于 Name 属性。

特定 UIA 控件模式的属性 也使用相关控件模式接口以相同方式查询。以 Toggle Pattern 为例, 若要查询 ToggleState 属性, 客户端可以使用 IUIAutomationTogglePattern::CurrentToggleState 或 IUIAutomationTogglePattern::GetCurrentPropertyValue(UIA_ToggleToggleStatePropertyId) 来获取 当前值。

本规范中的属性映射提供 {PropertyName},并不 指定访问属性值的所有具体方式。自动化客户端可以根据具体需要和编码风格 约定,使用上述约定访问当前 值或缓存值。

1.2.3 Android 可访问性 API

Android 可访问性服务和应用程序都将用户界面元素表示为 AccessibilityNodeInfo 对象树。可访问性服务接收事件, 遍历 AccessibilityNodeInfo 树、检索属性并在 节点上执行动作。相反,Android 应用程序通过构造视图或 composable, 或直接通过 AccessibilityNodeProvider,间接构建 AccessibilityNodeInfo 树。然后它们随后触发事件并处理动作。

对于 WAI-ARIA 实现者,尤其 感兴趣的是到 AccessibilityNodeInfoAccessibilityEvent 上的属性、动作和事件的映射。

1.2.4 可访问名称 和描述

每个平台可访问性 API 都包含一种 为可访问性树中创建的每个 可访问名称可访问描述 可访问对象分配和检索 属性的方式。 可访问性树。这些 属性如何实现以及如何命名会因 API 而异。

例如,在 MSAA 中,所有 可访问对象都支持 accName 属性,用于存储该对象的 可访问名称。当该 对象也支持拥有 可访问描述时, MSAA 会将此属性存储在该对象的 accDescription 属性中。

使用 ATK 的软件可以读取和写入对象的 accessible-nameaccessible-description 属性。相应地,AT-SPI 可以通过其 atspi_accessible_get_nameatspi_accessible_get_description 函数查询这些 属性的值。

UIA 可访问性树中的自动化元素 具有 Name 属性。当该对象也支持拥有 可访问描述时, UIA 会将此属性存储在该对象的 FullDescription 属性中。

对象的可访问描述, 当由 aria-descriptionaria-describedby 提供时,应 在 accessibilityCustomContent API 中暴露。否则,它应暴露为 AXHelp

在 Android 中,可访问名称映射到 AccessibilityNodeInfo 上定义的多个属性,例如内容描述、补充描述和文本。

更多详细信息,请参见 可访问名称和描述计算 规范。

2. 一致性

除标记为非规范性的章节外,本规范中的所有创作指南、图表、示例和注释 均为非规范性的。本规范中的其他所有内容均为规范性的。

本文档中的关键词 MAYMUSTMUST NOTSHOULDSHOULD NOT 应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释,但仅在它们如本文所示全部以大写字母 出现时才如此解释。

规范性章节提供用户代理和辅助技术为使实现符合本规范而 MUST 遵循的要求。

非规范性(资料性)章节提供有助于理解本规范的信息。此类 章节可以包含推荐实践的示例,但为了符合本规范, 并不要求遵循这些建议。

2.1 WAI-ARIA 中已弃用的特性

WAI-ARIA 规范将某些特性列为已弃用。 尽管这意味着鼓励作者不要使用此类特性,但预计 这些特性仍可能在遗留内容中使用。因此,用户代理 继续将这些特性映射到可访问性 API 非常重要,并且这样做也是 符合本规范的一部分。当未来版本的 WAI-ARIA 规范将此类特性从 已弃用更改为已移除时,它们也将从映射中移除,用户代理将 不再被要求继续支持这些特性。

3. WAI-ARIA 映射到可访问性 API

3.1 暴露 WAI-ARIA 语义的一般规则

在平台可访问性 API支持的情况下,用户代理通过桌面可访问性 WAI-ARIA 语义的标准机制 暴露桌面可访问性 API。例如, 对于 WAI-ARIA 部件,可比较该 部件在类似桌面部件中如何暴露。一般而言,大多数 WAI-ARIA 部件能力都通过可访问性 API角色、值、布尔型状态以及 关系来暴露。

WAI-ARIA 1.0 和 1.1 而言, 可访问性 API 仅单向 工作。用户代理通过可访问性 API 发布 WAI-ARIA 信息(角色、状态和属性),而 AT 可以使用同一 API 获取该信息。然而,另一个方向并不 受支持。WAI-ARIA 1.0 和 1.1 并 未定义辅助技术直接修改 WAI-ARIA 信息的机制。

术语“exposing”、“mapping”和“including”指在 可访问 对象节点中创建 可访问性树,并用特定于 可访问性 API状态属性填充这些对象。

3.2 原生标记语义与 WAI-ARIA 之间的冲突

WAI-ARIA 角色、状态和属性旨在当具有这些语义的原生宿主 语言 元素不可用时,添加语义信息,并且通常用于自身没有原生语义的元素。它们也可以 用于与目标对象具有相似但不完全相同语义的元素(例如,嵌套列表可 用于表示树结构)。此方法可作为 旧浏览器后备策略的一部分,这些浏览器没有 WAI-ARIA 实现;或者因为重新利用的元素的原生呈现减少了所需的 样式和/或脚本量。除以下概述的情况外,用户代理MUST 始终使用 WAI-ARIA 语义来定义 它如何向可访问性 API暴露该元素,而不是使用宿主语言 语义。

宿主语言可能具有与角色对应的隐式 WAI-ARIA 语义的特性。当提供了一个 WAI-ARIA 角色,且该角色在可访问性 API 中有对应角色时,用户代理 MUST 使用 WAI-ARIA 角色的语义进行 处理, 而不是原生语义,除非该角色需要 WAI-ARIA 状态和属性,而这些状态和属性的属性 被宿主语言在 原生元素上明确禁止。角色的值不会像状态和属性的值那样发生冲突,并且因为预期作者即使在通常 不会被重新利用的元素上提供 WAI-ARIA 角色,也应有有效理由。例如,旋钮按钮通常由 文本字段(<input type="text">)构造,以获得大多数默认键盘 支持。但是,原生角色“文本字段”并不正确,因为它 不能恰当地传达旋钮按钮的附加功能。作者添加 WAI-ARIA 角色 spinbutton<input type="text" role="spinbutton" ...>),以便该 控件在可访问性 API 中被正确映射。当提供的 WAI-ARIA 角色在可访问性 API 中没有 对应角色时,用户代理 MAYWAI-ARIA 角色外,还暴露原生语义。如果宿主语言元素被一个 WAI-ARIA 角色覆盖,而该角色的语义或结构 不等同于原生宿主语言语义,也不等同于这些 语义的子类,则将任何具有“允许的可访问性子角色”中指定角色的子元素视为具有 presentationnone

上述文本与 WAI-ARIA 规范略有不同。要求 用户代理暴露 WAI-ARIA 角色而不是原生角色,本意是仅适用于从 WAI-ARIA 角色到可访问性 API 中相应角色存在直接映射的情况。该要求 在 WAI-ARIA 规范中的措辞并不明确,然而,且已 被实现者作出不同解释。这里对此 要求进行了澄清,并添加了一项附加声明,以表明如果没有直接映射到可访问性 API 中的角色,用户代理 可以暴露原生语义。由于存在不同的 实现,将建议作者不要在 WAI-ARIA Authoring Practices Guide 中,将此类 WAI-ARIA 角色添加到在 自身具有语义的原生元素上。

WAI-ARIA 状态和属性 对应于具有相同隐式 WAI-ARIA 语义的宿主语言特性时,如果 值不同步,可能会出现问题。例如, HTML checked 属性和 aria-checked 属性可能具有冲突的值。因此,为防止向辅助技术提供 冲突的状态和属性,宿主语言将明确声明 在哪些情况下,在宿主语言 元素上使用 WAI-ARIA 属性会与该元素的原生属性发生冲突。当宿主语言声明某个 WAI-ARIA 属性与给定元素的原生属性存在 直接语义冲突时,用户 代理 MUST 忽略该 WAI-ARIA 属性,并改用具有相同隐式语义的宿主 语言属性。

宿主语言还可能记录不能用 WAI-ARIA 覆盖的特性(这些称为“强原生 语义”)。这些可以是具有隐式 WAI-ARIA 语义的特性,也可以是在用 WAI-ARIA 改变语义时处理会变得 不确定的特性。虽然一致性检查器在 WAI-ARIA 角色用于具有强 原生语义的元素上时可能会发出错误或警告,但用户代理 MUST 仍然在将该元素暴露给 可访问性 API 时,使用 WAI-ARIA 角色的语义值。

3.3 暴露不直接映射到可访问性 API 属性的属性

平台可访问性 API可能具有 WAI-ARIA 中没有的特性。同样, WAI-ARIA 暴露了在发布时尚不被可访问性 API 支持的能力。通常,并非所有 WAI-ARIA 属性与 平台可访问性 API 之间都存在一对一关系。 当 WAI-ARIA 角色状态属性不直接映射 到某个 可访问性 API,并且该 API 中存在用于暴露 WAI-ARIA 角色、状态和属性及其 值的机制时,用户代理 MUST 按如下方式使用该机制暴露 WAI-ARIA 数据:

MSAA 没有提供用于暴露 不直接映射到 API 的属性的机制,并且在实现者之间也没有 关于如何实现这一点的共识。

用户代理还 MUST 通过此机制暴露完整的角色字符串,并且 MAY 也通过此机制暴露 WAI-ARIA 属性和值, 即使这些属性和值已经直接映射到可访问性 API

建议浏览器实现者公开记录其用于暴露任何相关信息的 API 方法, 以便 辅助技术开发者可以 使用该 API 来支持用户特性。

3.4 角色映射

平台可访问性 API 传统上具有一组有限的预定义 角色,这些角色是该平台上的 辅助技术所预期的, 并且可能只暴露一个或两个角色。相比之下, WAI-ARIA 允许将多个角色指定 为由空格分隔的有效角色令牌的有序集合。附加角色是 后备角色,类似于在首选字体类型不受支持时指定多个字体的概念。

3.4.1 一般规则

如果 API 支持相应机制,用户代理 MUST 暴露 WAI-ARIA 角色字符串。这允许辅助技术对 角色执行自己的额外处理。

  • MSAA不支持。用户代理 SHOULD NOTMSAAaccRole 属性中暴露自定义角色。
  • IAccessible2:作为对象属性对(xml-roles:"string")暴露
  • UIA:作为 AriaRole 属性暴露。 AriaRole property 还可以支持使用空格作为 分隔符的次要角色。
  • ATK/AT-SPI:作为对象 属性对暴露 (xml-roles:"string"

3.4.2 计算角色

元素的 computedrole 是一个字符串,表示由浏览器引擎计算出的该元素的角色。 computedrole 主要用于开发者 工具以及规范一致性和互操作性测试。

用户代理会提供此角色字符串,例如在开发者工具中提供,并响应 WebDriver 函数 getComputedRole, 该函数用于 ARIA、HTML-AAM 和其他 规范的互操作性测试

当元素具有角色但未包含在所需上下文中时(例如, 没有所需的 list 角色可访问性父项的孤立 listitem),这是创作 错误,但用户代理行为并未被指定为单一规则。对于大多数角色,用户 代理可以通过忽略该角色来恢复错误,或在实现认为无害的场景中尊重作者预期的角色。 请注意,引擎如何处理作者角色错误方面的这种宽容性 可能会被特定语言的映射文档(例如 [HTML-AAM])覆盖。

当宿主语言元素没有到某个有效的、非抽象角色的精确或等效映射时, 相关的 Accessibility API Mapping 扩展规范 MAY 指定一个唯一的 computedrole 字符串作为互操作性测试用途的返回值,例如 [HTML-AAM] 中的 <video> -> "html-video"。 然而,作者 MUST NOTrole 属性中使用任何 带宿主语言前缀的 computedrole 字符串(例如 html-video),除非该令牌也匹配一个有效的、已定义的角色(例如 dpub-chapter)。用户代理 MUST 忽略任何抽象或无效的角色令牌。

3.4.3 角色映射表

3.4.3.1 alert
ARIA 规范 alert
计算角色

alert

MSAA + IAccessible2 角色:ROLE_SYSTEM_ALERT
事件:用户代理 SHOULD 触发 EVENT_SYSTEM_ALERT[注 2]
UIA 控件类型:Group
本地化控件类型:alert
LiveSetting:Assertive (2)
事件:用户代理 SHOULD 触发一个 系统警报事件[注 2]
ATK/AT-SPI 角色:ROLE_NOTIFICATION
事件:用户代理 SHOULD 触发一个 系统警报事件[注 2]
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationAlert
事件:用户代理 SHOULD 触发一个 系统警报事件[注 2]
Android

待定

3.4.3.2 alertdialog
ARIA 规范 alertdialog
计算角色

alertdialog

MSAA + IAccessible2 角色:ROLE_SYSTEM_DIALOG
事件:用户代理 SHOULD 触发 EVENT_SYSTEM_ALERT[注 2]
UIA 控件类型:Pane
事件:用户代理 SHOULD 触发一个 系统警报事件[注 2]
ATK/AT-SPI 角色:ROLE_ALERT
接口:Window
事件:用户代理 SHOULD 触发一个 系统警报事件[注 2]
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationAlertDialog
事件:用户代理 SHOULD 触发一个 系统警报事件[注 2]
Android

待定

3.4.3.3 application
ARIA 规范 application
计算角色

application

MSAA + IAccessible2 角色:ROLE_SYSTEM_APPLICATION
UIA 控件类型:Pane
本地化控件类型:application
ATK/AT-SPI 角色:ROLE_EMBEDDED
AX API[注 1] AXRole:AXGroup
AXSubrole:AXWebApplication
Android

待定

3.4.3.4 article
ARIA 规范 article
计算角色

article

MSAA + IAccessible2 角色:ROLE_SYSTEM_DOCUMENT
状态:STATE_SYSTEM_READONLY
对象属性:xml-roles:article
UIA 控件类型:Group
本地化控件类型:article
ATK/AT-SPI 角色:ROLE_ARTICLE
对象属性:xml-roles:article
AX API[注 1] AXRole:AXGroup
AXSubrole:AXDocumentArticle
Android

待定

3.4.3.6 blockquote
ARIA 规范 blockquote
计算角色

blockquote

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_BLOCK_QUOTE
UIA 控件类型:Group
本地化控件类型:blockquote
ATK/AT-SPI 角色:ROLE_BLOCK_QUOTE
AX API[注 1] AXRole:AXGroup
AXSubrole:<nil>
Android

待定

3.4.3.7 button,其 aria-pressedaria-haspopup 为默认值
ARIA 规范 button ,其 aria-pressedaria-haspopup 为默认值
计算角色

button

MSAA + IAccessible2 角色:ROLE_SYSTEM_PUSHBUTTON
UIA 控件类型:Button
ATK/AT-SPI 角色:ROLE_PUSH_BUTTON
AX API[注 1] AXRole:AXButton
AXSubrole:<nil>
Android

待定

3.4.3.8 button,其 aria-haspopup 为非 false
ARIA 规范 button ,其 aria-haspopup 为非 false
计算角色

button

MSAA + IAccessible2 角色:ROLE_SYSTEM_BUTTONMENU
UIA 控件类型:Button
ATK/AT-SPI 角色:ROLE_PUSH_BUTTON
AX API[注 1] AXRole:AXPopUpButton
AXSubrole:<nil>
Android

待定

3.4.3.9 button,其 aria-pressed 具有已定义值
ARIA 规范 button ,其 aria-pressed 具有已定义值
计算角色

button

MSAA + IAccessible2 角色:ROLE_SYSTEM_PUSHBUTTON
角色:IA2_ROLE_TOGGLE_BUTTON
UIA 控件类型:Button
ATK/AT-SPI 角色:ROLE_TOGGLE_BUTTON
AX API[注 1] AXRole:AXCheckBox
AXSubrole:AXToggle
Android

待定

3.4.3.10 caption
ARIA 规范 caption
计算角色

caption

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_CAPTION
UIA 控件类型:Text
ATK/AT-SPI 角色:ROLE_CAPTION
AX API[注 1] AXRole:AXGroup
AXSubrole:<nil>
Android

待定

3.4.3.11 cell
ARIA 规范 cell
计算角色

cell

MSAA + IAccessible2 角色:ROLE_SYSTEM_CELL
接口:IAccessibleTableCell
UIA 控件类型:DataItem
本地化控件类型:item
控件模式:GridItem
控件模式:TableItem
ATK/AT-SPI 角色:ROLE_TABLE_CELL
接口:TableCell
AX API[注 1] AXRole:AXCell
AXSubrole:<nil>
Android

待定

3.4.3.12 checkbox
ARIA 规范 checkbox
计算角色

checkbox

MSAA + IAccessible2 角色:ROLE_SYSTEM_CHECKBUTTON
另见:状态和属性映射 表中的 aria-checked
UIA 控件类型:Checkbox
另见:状态和属性映射 表中的 aria-checked
ATK/AT-SPI 角色:ROLE_CHECK_BOX
另见:状态和属性映射 表中的 aria-checked
AX API[注 1] AXRole:AXCheckBox
AXSubrole:<nil>
另见:状态和属性映射 表中的 aria-checked
Android

待定

3.4.3.13 code
ARIA 规范 code
计算角色

code

MSAA + IAccessible2 角色:IA2_ROLE_TEXT_FRAME
对象属性:xml-roles:code
UIA 控件类型:Text
本地化控件类型:code
ATK/AT-SPI 角色:ROLE_STATIC
对象属性:xml-roles:code
AX API[注 1] AXRole:AXGroup
AXSubrole:AXCodeStyleGroup
Android

待定

3.4.3.14 columnheader
ARIA 规范 columnheader
计算角色

columnheader

MSAA + IAccessible2 角色:ROLE_SYSTEM_COLUMNHEADER
接口:IAccessibleTableCell
UIA 控件类型:DataItem
本地化控件类型:column header
控件模式:GridItem
控件模式:TableItem
ATK/AT-SPI 角色:ROLE_COLUMN_HEADER
接口:TableCell
AX API[注 1] AXRole:AXCell
AXSubrole:<nil>
Android

待定

3.4.3.15 combobox
ARIA 规范 combobox
计算角色

combobox

MSAA + IAccessible2 角色:ROLE_SYSTEM_COMBOBOX
状态:STATE_SYSTEM_HASPOPUP
状态:如果 aria-expanded 不是 "true",则为 STATE_SYSTEM_COLLAPSED
UIA 控件类型:Combobox
ATK/AT-SPI 角色:ROLE_COMBO_BOX
状态:STATE_EXPANDABLE
状态:STATE_HAS_POPUP
AX API[注 1] AXRole:AXComboBox
AXSubrole:<nil>
Android

待定

3.4.3.16 comment
ARIA 规范 comment
计算角色

comment

MSAA + IAccessible2 角色:IA2_ROLE_COMMENT
对象属性:xml-roles:comment
UIA 控件类型:Group
本地化控件类型:comment
ATK/AT-SPI 角色:ROLE_COMMENT
对象属性:xml-roles:comment
AX API[注 1] AXRole:AXGroup
Android

待定

3.4.3.17 complementary
ARIA 规范 complementary
计算角色

complementary

MSAA + IAccessible2 角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:complementary
UIA 控件类型:Group
本地化控件类型:complementary
Landmark Type:Custom
Localized Landmark Type:complementary
ATK/AT-SPI 角色:ROLE_LANDMARK
对象属性:xml-roles:complementary
AX API[注 1] AXRole:AXGroup
AXSubrole:AXLandmarkComplementary
Android

待定

3.4.3.18 contentinfo
ARIA 规范 contentinfo
计算角色

contentinfo

MSAA + IAccessible2 角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:contentinfo
UIA 控件类型:Group
本地化控件类型: content information
Landmark Type:Custom
Localized Landmark Type: content information
ATK/AT-SPI 角色:ROLE_LANDMARK
对象属性:xml-roles:contentinfo
AX API[注 1] AXRole:AXGroup
AXSubrole:AXLandmarkContentInfo
Android

待定

3.4.3.19 definition
ARIA 规范 definition
计算角色

definition

MSAA + IAccessible2 对象属性:xml-roles:definition
UIA 控件类型:Group
本地化控件类型:definition
ATK/AT-SPI 角色:ROLE_DESCRIPTION_VALUE
对象属性:xml-roles:definition
AX API[注 1] AXRole:AXGroup
AXSubrole:AXDefinition
Android

待定

3.4.3.20 deletion
ARIA 规范 deletion
计算角色

deletion

MSAA + IAccessible2 角色:IA2_ROLE_CONTENT_DELETION
UIA 控件类型:Text
本地化控件类型:deletion
ATK/AT-SPI 角色:ROLE_CONTENT_DELETION
对象属性:xml-roles:deletion
AX API[注 1] AXRole:AXGroup
AXSubrole:AXDeleteStyleGroup
AXAttributedStringForTextMarkerRange:对 deletion 中包含的所有文本,包含 AXIsSuggestedDeletion = 1;
Android

待定

3.4.3.21 dialog
ARIA 规范 dialog
计算角色

dialog

MSAA + IAccessible2 角色:ROLE_SYSTEM_DIALOG
UIA 控件类型:Pane
ATK/AT-SPI 角色:ROLE_DIALOG
接口:Window
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationDialog
Android

待定

3.4.3.22 directory (已弃用)
ARIA 规范 directory
计算角色

list

MSAA + IAccessible2 角色:ROLE_SYSTEM_LIST
UIA 控件类型:List
ATK/AT-SPI 角色:ROLE_LIST
AX API[注 1] AXRole:AXList
AXSubrole:AXContentList
Android

待定

3.4.3.23 document
ARIA 规范 document
计算角色

document

MSAA + IAccessible2 角色:ROLE_SYSTEM_DOCUMENT
状态:STATE_SYSTEM_READONLY
UIA 控件类型:Document
ATK/AT-SPI 角色:ROLE_DOCUMENT_FRAME
AX API[注 1] AXRole:AXGroup
AXSubrole:AXDocument
Android

待定

3.4.3.24 emphasis
ARIA 规范 emphasis
计算角色

emphasis

MSAA + IAccessible2 角色:IA2_ROLE_TEXT_FRAME
对象属性:xml-roles:emphasis
UIA 控件类型:Text
本地化控件类型:emphasis
ATK/AT-SPI 角色:ROLE_STATIC
对象属性:xml-roles:emphasis
AX API[注 1] AXRole:AXGroup
AXSubrole:AXEmphasisStyleGroup
Android

待定

3.4.3.25 feed
ARIA 规范 feed
计算角色

feed

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
对象属性:xml-roles:feed
UIA 控件类型:Group
本地化控件类型:feed
ATK/AT-SPI 角色:ROLE_PANEL
对象属性:xml-roles:feed
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationGroup
Android

待定

3.4.3.26 figure
ARIA 规范 figure
计算角色

figure

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
对象属性:xml-roles:figure
UIA 控件类型:Group
本地化控件类型:figure
ATK/AT-SPI 角色:ROLE_PANEL
对象属性:xml-roles:figure
AX API[注 1] AXRole:AXGroup
AXSubrole:<nil>
Android

待定

3.4.3.27 具有可访问 名称的 form
ARIA 规范 form 具有可访问名称
计算角色

form

MSAA + IAccessible2 角色:IA2_ROLE_FORM
对象属性:xml-roles:form
UIA 控件类型:Group
本地化控件类型:form
Landmark Type:Form
ATK/AT-SPI 角色:ROLE_LANDMARK
对象属性:xml-roles:form
AX API[注 1] AXRole:AXGroup
AXSubrole:AXLandmarkForm
Android

待定

3.4.3.28 没有可访问 名称的 form
ARIA 规范 form 没有可访问名称
计算角色

form

MSAA + IAccessible2 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
UIA 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
ATK/AT-SPI 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
AX API[注 1] 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
Android

待定

3.4.3.29 generic
ARIA 规范 generic
计算角色

generic

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_SECTION
UIA 控件类型:Group
ATK/AT-SPI 角色:ROLE_SECTION
AX API[注 1] AXRole:AXGroup
AXSubrole:<nil>
Android

待定

3.4.3.30 grid
ARIA 规范 grid
计算角色

grid

MSAA + IAccessible2 角色:ROLE_SYSTEM_TABLE
对象属性:xml-roles:grid
接口:IAccessibleTable2
方法:IAccessible::accSelect()
方法:IAccessible::get_accSelection()
UIA 控件类型:DataGrid
控件模式:Grid
控件模式:Table
控件模式:Selection
ATK/AT-SPI 角色:ROLE_TABLE
对象属性:xml-roles:grid
接口:Table
接口:Selection

由于 WAI-ARIA 不支持通过可访问性 API 修改选择,用户代理 MUST 对所有提供修改选择方式的 Selection 方法返回 false

AX API[注 1] AXRole:AXTable
AXSubrole:<nil>
AXColumnHeaderUIElements:指向 columnheader 元素的指针列表
AXHeader:指向包含这些 columnheader 元素的 row 或 group 的指针
AXRowHeaderUIElements:指向 rowheader 元素的指针列表
Android

待定

3.4.3.31 gridcell
ARIA 规范 gridcell
计算角色

gridcell

MSAA + IAccessible2 角色:ROLE_SYSTEM_CELL
接口:IAccessibleTableCell
UIA 控件类型:DataItem
本地化控件类型:item
控件模式:SelectionItem
控件模式:GridItem
控件模式:TableItem
SelectionItem.SelectionContainer:包含它的 grid
ATK/AT-SPI 角色:ROLE_TABLE_CELL
接口:TableCell
AX API[注 1] AXRole:AXCell
AXSubrole:<nil>
Android

待定

3.4.3.32 group
ARIA 规范 group
计算角色

group

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
UIA 控件类型:Group
ATK/AT-SPI 角色:ROLE_PANEL
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationGroup
Android

待定

3.4.3.33 heading
ARIA 规范 heading
计算角色

heading

MSAA + IAccessible2 角色:IA2_ROLE_HEADING
对象属性:xml-roles:heading
UIA 控件类型:Text
本地化控件类型:heading
ATK/AT-SPI 角色:ROLE_HEADING
AX API[注 1] AXRole:AXHeading
AXSubrole:<nil>
Android

待定

3.4.3.34 image
ARIA 规范 image
计算角色

image

MSAA + IAccessible2 角色:ROLE_SYSTEM_GRAPHIC
接口:IAccessibleImage
UIA 控件类型:Image
ATK/AT-SPI 角色:ROLE_IMAGE
接口:Image
AX API[注 1] AXRole:AXImage
AXSubrole:<nil>
Android

待定

3.4.3.35 img
ARIA 规范 img
计算角色

image

MSAA + IAccessible2 角色:ROLE_SYSTEM_GRAPHIC
接口:IAccessibleImage
UIA 控件类型:Image
ATK/AT-SPI 角色:ROLE_IMAGE
接口:Image
AX API[注 1] AXRole:AXImage
AXSubrole:<nil>
Android

待定

3.4.3.36 insertion
ARIA 规范 insertion
计算角色

insertion

MSAA + IAccessible2 角色:IA2_ROLE_CONTENT_INSERTION
UIA 控件类型:Text
本地化控件类型:insertion
ATK/AT-SPI 角色:ROLE_CONTENT_INSERTION
对象属性:xml-roles:insertion
AX API[注 1] AXRole:AXGroup
AXSubrole:AXInsertStyleGroup
AXAttributedStringForTextMarkerRange:对 insertion 中包含的所有文本,包含 AXIsSuggestedInsertion = 1;
Android

待定

3.4.3.38 list
ARIA 规范 list
计算角色

list

MSAA + IAccessible2 角色:ROLE_SYSTEM_LIST
状态:STATE_SYSTEM_READONLY
UIA 控件类型:List
ATK/AT-SPI 角色:ROLE_LIST
AX API[注 1] AXRole:AXList
AXSubrole:AXContentList
Android

待定

3.4.3.39 没有 combobox 可访问性父项的 listbox
ARIA 规范 listbox
计算角色

listbox

MSAA + IAccessible2 角色:ROLE_SYSTEM_LIST
方法:IAccessible::accSelect()
方法:IAccessible::get_accSelection()
UIA 控件类型:List
控件模式:Selection
ATK/AT-SPI 角色:ROLE_LIST_BOX
接口:Selection

由于 WAI-ARIA 不支持通过可访问性 API 修改选择,用户代理 MUST 对所有提供修改选择方式的 Selection 方法返回 false

AX API[注 1] AXRole:AXList
AXSubrole:<nil>
Android

待定

3.4.3.40 具有 combobox 可访问性父项的 listbox
ARIA 规范 listbox
计算角色

listbox

MSAA + IAccessible2 角色:ROLE_SYSTEM_LIST
方法:IAccessible::accSelect()
方法:IAccessible::get_accSelection()
UIA 控件类型:List
控件模式:Selection
ATK/AT-SPI 角色:ROLE_MENU
接口:Selection

由于 WAI-ARIA 不支持通过可访问性 API 修改选择,用户代理 MUST 对所有提供修改选择方式的 Selection 方法返回 false

AX API[注 1] AXRole:AXList
AXSubrole:<nil>
Android

待定

3.4.3.41 listitem
ARIA 规范 listitem
计算角色

listitem

MSAA + IAccessible2 角色:ROLE_SYSTEM_LISTITEM
状态:STATE_SYSTEM_READONLY
UIA 控件类型:ListItem
控件模式:SelectionItem
SelectionItem.SelectionContainer:包含它的 list
ATK/AT-SPI 角色:ROLE_LIST_ITEM
AX API[注 1] AXRole:AXGroup
AXSubrole:<nil>
Android

待定

3.4.3.42 log
ARIA 规范 log
计算角色

log

MSAA + IAccessible2 对象属性:xml-roles:log
对象属性: container-live:polite
对象属性:live:polite
对象属性:container-live-role:log
UIA 控件类型:Group
本地化控件类型:log
LiveSetting:Polite (1)
ATK/AT-SPI 角色:ROLE_LOG
对象属性:xml-roles:log
对象属性: container-live:polite
对象属性:live:polite
对象属性:container-live-role:log
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationLog
Android

待定

3.4.3.43 main
ARIA 规范 main
计算角色

main

MSAA + IAccessible2 角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:main
UIA 控件类型:Group
本地化控件类型:main
Landmark Type:Main
ATK/AT-SPI 角色:ROLE_LANDMARK
对象属性:xml-roles:main
AX API[注 1] AXRole:AXGroup
AXSubrole:AXLandmarkMain
Android

待定

3.4.3.44 mark
ARIA 规范 mark
计算角色

mark

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_MARK
对象属性:xml-roles:mark
UIA 控件类型:Group
ATK/AT-SPI 角色:ROLE_MARK
对象属性:xml-roles:mark
AX API[注 1] AXRole:AXGroup
AXRoleDescription:highlight
AXAttributedStringForTextMarkerRange:对 mark 中包含的所有文本,包含 AXHighlight = 1;
Android

待定

3.4.3.45 marquee
ARIA 规范 marquee
计算角色

marquee

MSAA + IAccessible2 角色:ROLE_SYSTEM_ANIMATION
对象属性:xml-roles:marquee
UIA 控件类型:Group
本地化控件类型:marquee
ATK/AT-SPI 角色:ROLE_MARQUEE
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationMarquee
Android

待定

3.4.3.46 math
ARIA 规范 math
计算角色

math

MSAA + IAccessible2 角色:ROLE_SYSTEM_EQUATION
UIA 控件类型:Group
本地化控件类型:math
ATK/AT-SPI 角色:ROLE_MATH
AX API[注 1] AXRole:AXGroup
AXSubrole:AXDocumentMath
Android

待定

3.4.3.52 meter
ARIA 规范 meter
计算角色

meter

MSAA + IAccessible2 角色:IA2_ROLE_LEVEL_BAR
接口:IAccessibleValue
UIA 控件类型:ProgressBar
本地化控件类型:meter
控件模式:RangeValue
ATK/AT-SPI 角色:ROLE_LEVEL_BAR
接口:Value
AX API[注 1] AXRole:AXLevelIndicator
AXSubrole:AXMeter
Android

待定

3.4.3.54 none
ARIA 规范 none
计算角色

none

MSAA + IAccessible2

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,将其暴露为 IA2_ROLE_TEXT_FRAME用户 代理 SHOULD可访问性 树中剪除空后代。

UIA

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,使用 text 模式暴露它。用户 代理 SHOULD可访问性 树中剪除空后代。

ATK/AT-SPI

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,将其暴露为 ROLE_SECTION用户代理 SHOULD可访问性 树中剪除空后代。

AX API[注 1]

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,将其暴露为 AXGroup用户代理 SHOULD可访问性 树中剪除空后代。

Android

待定

3.4.3.55 note
ARIA 规范 note
计算角色

note

MSAA + IAccessible2 角色:IA2_ROLE_NOTE
UIA 控件类型:Group
本地化控件类型:note
ATK/AT-SPI 角色:ROLE_COMMENT
AX API[注 1] AXRole:AXGroup
AXSubrole:AXDocumentNote
Android

待定

3.4.3.56 不在 combobox 内部的 option
ARIA 规范 option 不在 combobox 内部
计算角色

option

MSAA + IAccessible2 角色:ROLE_SYSTEM_LISTITEM
另见:状态和属性映射 表中的 aria-checked
UIA 控件类型:ListItem
控件模式:Invoke
另见:状态和属性映射 表中的 aria-checked
ATK/AT-SPI 角色:ROLE_LIST_ITEM
另见:状态和属性映射 表中的 aria-checked
AX API[注 1] AXRole:AXStaticText
AXSubrole:<nil>
另见:状态和属性映射 表中的 aria-checked
Android

待定

3.4.3.57 combobox 内部的 option
ARIA 规范 optioncombobox 内部
计算角色

option

MSAA + IAccessible2 角色:ROLE_SYSTEM_LISTITEM
另见:状态和属性映射 表中的 aria-checked
UIA 控件类型:ListItem
控件模式:Invoke
另见:状态和属性映射 表中的 aria-checked
ATK/AT-SPI 角色:ROLE_MENU_ITEM
另见:状态和属性映射 表中的 aria-checked
AX API[注 1] AXRole:AXStaticText
AXSubrole:<nil>
另见:状态和属性映射 表中的 aria-checked
Android

待定

3.4.3.58 paragraph
ARIA 规范 paragraph
计算角色

paragraph

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_PARAGRAPH
UIA 控件类型:Text
ATK/AT-SPI 角色:ROLE_PARAGRAPH
AX API[注 1] AXRole:AXGroup
AXSubrole:<nil>
Android

待定

3.4.3.59 presentation
ARIA 规范 presentation
计算角色

none

MSAA + IAccessible2

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,将其暴露为 IA2_ROLE_TEXT_FRAME用户 代理 SHOULD可访问性 树中剪除空后代。

UIA

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,使用 text 模式暴露它。用户 代理 SHOULD可访问性 树中剪除空后代。

ATK/AT-SPI

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,将其暴露为 ROLE_SECTION用户代理 SHOULD可访问性 树中剪除空后代。

AX API[注 1]

对于具有指定的允许可访问性子项的对象(例如,具有 gridcell 子项的 grid,具有 listitem 子项的 list),且该后代位于 可访问性 树中时,将其暴露为 AXGroup用户代理 SHOULD可访问性 树中剪除空后代。

Android

待定

3.4.3.60 progressbar
ARIA 规范 progressbar
计算角色

progressbar

MSAA + IAccessible2 角色:ROLE_SYSTEM_PROGRESSBAR
状态:STATE_SYSTEM_READONLY
接口:IAccessibleValue
UIA 控件类型:ProgressBar
控件模式:如果存在 aria-valuenowaria-valuemaxaria-valuemin,则为 RangeValue
ATK/AT-SPI 角色:ROLE_PROGRESS_BAR
接口:Value

由于 WAI-ARIA 不支持通过可访问性 API 修改值,用户代理 MUST 对所有提供修改值方式的 Value 方法返回 false

AX API[注 1] AXRole:AXProgressIndicator
AXSubrole:<nil>
Android

待定

3.4.3.61 radio
ARIA 规范 radio
计算角色

radio

MSAA + IAccessible2 角色:ROLE_SYSTEM_RADIOBUTTON
另见:状态和属性映射 表中的 aria-checked
UIA 控件类型:RadioButton
控件模式:Toggle
控件模式:SelectionItem
另见:状态和属性映射 表中的 aria-checked
ATK/AT-SPI 角色:ROLE_RADIO_BUTTON
另见:状态和属性映射 表中的 aria-checked
AX API[注 1] AXRole:AXRadioButton
AXSubrole:<nil>
另见:状态和属性映射 表中的 aria-checked
Android

待定

3.4.3.62 radiogroup
ARIA 规范 radiogroup
计算角色

radiogroup

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
UIA 控件类型:List
ATK/AT-SPI 角色:ROLE_PANEL
AX API[注 1] AXRole:AXRadioGroup
AXSubrole:<nil>
Android

待定

3.4.3.63 具有可访问 名称的 region
ARIA 规范 region 具有可访问名称
计算角色

region

MSAA + IAccessible2 角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:region
UIA 控件类型:Group
本地化控件类型:region
Landmark Type:Custom
Localized Landmark Type:region
ATK/AT-SPI 角色:ROLE_LANDMARK
对象属性:xml-roles:region
AX API[注 1] AXRole:AXGroup
AXSubrole:AXLandmarkRegion
Android

待定

3.4.3.64 没有可访问 名称的 region
ARIA 规范 region 没有可访问名称
计算角色

使用原生宿主语言角色。

MSAA + IAccessible2 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
UIA 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
ATK/AT-SPI 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
AX API[注 1] 不要将该元素暴露为 地标。请改用该元素的原生宿主语言角色。
Android

待定

3.4.3.65 不在 treegrid 内部的 row
ARIA 规范 row 不在 treegrid 内部
计算角色

row

MSAA + IAccessible2 角色:ROLE_SYSTEM_ROW
UIA 控件类型:DataItem
本地化控件类型:row
控件模式:SelectionItem
ATK/AT-SPI 角色:ROLE_TABLE_ROW
AX API[注 1] AXRole:AXRow
AXSubrole:<nil>
Android

待定

3.4.3.66 treegrid 内部的 row
ARIA 规范 rowtreegrid 内部
计算角色

row

MSAA + IAccessible2 角色:ROLE_SYSTEM_OUTLINEITEM
UIA 控件类型:DataItem
本地化控件类型:row
控件模式:SelectionItem
ATK/AT-SPI 角色:ROLE_TABLE_ROW
AX API[注 1] AXRole:AXRow
AXSubrole:<nil>
Android

待定

3.4.3.67 rowgroup
ARIA 规范 rowgroup
计算角色

rowgroup

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
UIA 控件类型:Group
ATK/AT-SPI 角色:ROLE_PANEL
AX API[注 1] 未映射
Android

待定

3.4.3.68 rowheader
ARIA 规范 rowheader
计算角色

rowheader

MSAA + IAccessible2 角色:ROLE_SYSTEM_ROWHEADER
接口:IAccessibleTableCell
UIA 控件类型:HeaderItem
ATK/AT-SPI 角色:ROLE_ROW_HEADER
接口:TableCell
AX API[注 1] AXRole:AXCell
AXSubrole:<nil>
Android

待定

3.4.3.69 scrollbar
ARIA 规范 scrollbar
计算角色

scrollbar

MSAA + IAccessible2 角色:ROLE_SYSTEM_SCROLLBAR
接口:IAccessibleValue
UIA 控件类型:ScrollBar
控件模式:RangeValue
ATK/AT-SPI 角色:ROLE_SCROLL_BAR
接口:Value

由于 WAI-ARIA 不支持通过可访问性 API 修改值,用户代理 MUST 对所有提供修改值方式的 Value 方法返回 false

AX API[注 1] AXRole:AXScrollBar
AXSubrole:<nil>
Android

待定

3.4.3.72 sectionfooter
ARIA 规范 sectionfooter
计算角色

sectionfooter

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
对象属性:xml-roles:sectionfooter
UIA 控件类型:Group
本地化控件类型:section footer
ATK/AT-SPI 角色:ROLE_FOOTER
AX API[注 1] AXRole:AXGroup
AXSubrole:AXSectionFooter
AXRoleDescription:section footer
Android

待定

3.4.3.73 sectionheader
ARIA 规范 sectionheader
计算角色

sectionheader

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
对象属性:xml-roles:sectionheader
UIA 控件类型:Group
本地化控件类型:section header
ATK/AT-SPI 角色:ROLE_HEADER
AX API[注 1] AXRole:AXGroup
AXSubrole:AXSectionHeader
AXRoleDescription:section header
Android

待定

3.4.3.74 separator (不可聚焦)
ARIA 规范 separator (不可聚焦)
计算角色

seperator

MSAA + IAccessible2 角色:ROLE_SYSTEM_SEPARATOR
UIA 控件类型:Separator
ATK/AT-SPI 角色:ROLE_SEPARATOR
AX API[注 1] AXRole:AXSplitter
AXSubrole:<nil>
Android

待定

3.4.3.75 separator (可聚焦)
ARIA 规范 separator (可聚焦)
计算角色

seperator

MSAA + IAccessible2 角色:ROLE_SYSTEM_SEPARATOR
接口:IAccessibleValue
UIA 控件类型:Thumb
控件模式:RangeValue
ATK/AT-SPI 角色:ROLE_SEPARATOR
接口:Value

由于 WAI-ARIA 不支持通过可访问性 API 修改值,用户代理 MUST 对所有提供修改值方式的 Value 方法返回 false

AX API[注 1] AXRole:AXSplitter
AXSubrole:<nil>
Android

待定

3.4.3.76 slider
ARIA 规范 slider
计算角色

slider

MSAA + IAccessible2 角色:ROLE_SYSTEM_SLIDER
接口:IAccessibleValue
UIA 控件类型:Slider
控件模式:RangeValue
ATK/AT-SPI 角色:ROLE_SLIDER
接口:Value

由于 WAI-ARIA 不支持通过可访问性 API 修改值,用户代理 MUST 对所有提供修改值方式的 Value 方法返回 false

AX API[注 1] AXRole:AXSlider
AXSubrole:<nil>
Android

待定

3.4.3.77 spinbutton
ARIA 规范 spinbutton
计算角色

spinbutton

MSAA + IAccessible2 角色:ROLE_SYSTEM_SPINBUTTON
接口:IAccessibleValue
UIA 控件类型:Spinner
控件模式:RangeValue
ATK/AT-SPI 角色:ROLE_SPIN_BUTTON
接口:Value

由于 WAI-ARIA 不支持通过可访问性 API 修改值,用户代理 MUST 对所有提供修改值方式的 Value 方法返回 false

AX API[注 1] AXRole:AXIncrementor
AXSubrole:<nil>
Android

待定

3.4.3.78 status
ARIA 规范 status
计算角色

status

MSAA + IAccessible2 角色:ROLE_SYSTEM_STATUSBAR
对象属性: container-live:polite
对象属性:live:polite
对象属性: container-live-role:status
UIA 控件类型:Group
本地化控件类型:status
LiveSetting:Polite (1)
ATK/AT-SPI 角色:ROLE_STATUSBAR
对象属性: container-live:polite
对象属性:live:polite
对象属性: container-live-role:status
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationStatus
Android

待定

3.4.3.79 strong
ARIA 规范 strong
计算角色

strong

MSAA + IAccessible2 角色:IA2_ROLE_TEXT_FRAME
对象属性:xml-roles:strong
UIA 控件类型:Text
本地化控件类型:strong
ATK/AT-SPI 角色:ROLE_STATIC
对象属性:xml-roles:strong
AX API[注 1] AXRole:AXGroup
AXSubrole:AXStrongStyleGroup
Android

待定

3.4.3.80 subscript
ARIA 规范 subscript
计算角色

subscript

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_TEXT_FRAME
文本属性:text-position:sub
UIA 控件类型:Text
所使用的样式由可访问对象上实现的 TextRange 控件模式的 IsSubscript 属性暴露。
ATK/AT-SPI 角色:ROLE_SUBSCRIPT
AX API[注 1] AXRole:AXGroup
AXSubrole:AXSubscriptStyleGroup
Android

待定

3.4.3.81 suggestion
ARIA 规范 suggestion
计算角色

suggestion

MSAA + IAccessible2 角色:IA2_ROLE_SUGGESTION
对象属性:xml-roles:suggestion
UIA 控件类型:Group
本地化控件类型:suggestion
ATK/AT-SPI 角色:ROLE_SUGGESTION
对象属性:xml-roles:suggestion
AX API[注 1] AXRole:AXGroup
AXAttributedStringForTextMarkerRange:对 suggestion 中包含的所有文本,包含 AXIsSuggestion = 1;
Android

待定

3.4.3.82 superscript
ARIA 规范 superscript
计算角色

superscript

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
角色:IA2_ROLE_TEXT_FRAME
文本属性:text-position:super
UIA 控件类型:Text
所使用的样式由可访问对象上实现的 TextRange 控件模式的 IsSuperscript 属性暴露。
ATK/AT-SPI 角色:ROLE_SUPERSCRIPT
AX API[注 1] AXRole:AXGroup
AXSubrole:AXSuperscriptStyleGroup
Android

待定

3.4.3.83 switch
ARIA 规范 switch
计算角色

switch

MSAA + IAccessible2 角色:ROLE_SYSTEM_CHECKBUTTON
角色:IA2_ROLE_TOGGLE_BUTTON
对象属性:xml-roles:switch
另见:状态和属性映射 表中的 aria-checked
UIA 控件类型:Button
本地化控件类型:toggleswitch
控件模式:Toggle
另见:状态和属性映射 表中的 aria-checked
ATK/AT-SPI 角色:ROLE_TOGGLE_BUTTON
对象属性:xml-roles:switch
另见:状态和属性映射 表中的 aria-checked
AX API[注 1] AXRole:AXCheckBox
AXSubrole:AXSwitch
另见:状态和属性映射 表中的 aria-checked
Android

待定

3.4.3.84 tab
ARIA 规范 tab
计算角色

tab

MSAA + IAccessible2 角色:ROLE_SYSTEM_PAGETAB
状态:如果焦点位于与 aria-labelledby 关联的 tabpanel 内部,则为 STATE_SYSTEM_SELECTED
UIA 控件类型:TabItem
ATK/AT-SPI 角色:ROLE_PAGE_TAB
状态:如果焦点位于与 aria-labelledby 关联的 tabpanel 内部,则为 STATE_SELECTED
AX API[注 1] AXRole:AXRadioButton
AXSubrole:AXTabButton
Android

待定

3.4.3.85 table
ARIA 规范 table
计算角色

table

MSAA + IAccessible2 角色:ROLE_SYSTEM_TABLE
对象属性:xml-roles:table
接口:IAccessibleTable2
UIA 控件类型:Table
控件模式:Grid
控件模式:Table
ATK/AT-SPI 角色:ROLE_TABLE
对象属性:xml-roles:table
接口:Table
AX API[注 1] AXRole:AXTable
AXSubrole:<nil>
AXColumnHeaderUIElements:指向 columnheader 元素的指针列表
AXHeader:指向包含这些 columnheader 元素的 row 或 group 的指针
AXRowHeaderUIElements:指向 rowheader 元素的指针列表
Android

待定

3.4.3.86 tablist
ARIA 规范 tablist
计算角色

tablist

MSAA + IAccessible2 角色:ROLE_SYSTEM_PAGETABLIST
方法:IAccessible::accSelect()
方法:IAccessible::get_accSelection()
UIA 控件类型:Tab
控件模式:Selection
ATK/AT-SPI 角色:ROLE_PAGE_TAB_LIST
接口:Selection

由于 WAI-ARIA 不支持通过可访问性 API 修改选择,用户代理 MUST 对所有提供修改选择方式的 Selection 方法返回 false

AX API[注 1] AXRole:AXTabGroup
AXSubrole:<nil>
Android

待定

3.4.3.87 tabpanel
ARIA 规范 tabpanel
计算角色

tabpanel

MSAA + IAccessible2 角色:ROLE_SYSTEM_PANEROLE_SYSTEM_PROPERTYPAGE
UIA 控件类型:Pane
ATK/AT-SPI 角色:ROLE_SCROLL_PANE
AX API[注 1] AXRole:AXGroup
AXSubrole:AXTabPanel
Android

待定

3.4.3.88 term
ARIA 规范 term
计算角色

term

MSAA + IAccessible2 角色:IA2_ROLE_TEXT_FRAME
对象属性:xml-roles:term
UIA 控件类型:Text
本地化控件类型:term
ATK/AT-SPI 角色:ROLE_DESCRIPTION_TERM
AX API[注 1] AXRole:AXGroup
AXSubrole:AXTerm
Android

待定

3.4.3.89 aria-multilinefalse 时的 textbox
ARIA 规范 textboxaria-multilinefalse
计算角色

textbox

MSAA + IAccessible2 角色:ROLE_SYSTEM_TEXT
状态:IA2_STATE_SINGLE_LINE
UIA 控件类型:Edit
ATK/AT-SPI 角色:ROLE_ENTRY
状态:STATE_SINGLE_LINE
接口:如果 aria-readonly 不是 "true",则为 EditableText
AX API[注 1] AXRole:AXTextField
AXSubrole:<nil>
Android

待定

3.4.3.90 aria-multilinetrue 时的 textbox
ARIA 规范 textboxaria-multilinetrue
计算角色

textbox

MSAA + IAccessible2 角色:ROLE_SYSTEM_TEXT
状态:IA2_STATE_MULTI_LINE
UIA 控件类型:Edit
ATK/AT-SPI 角色:ROLE_ENTRY
状态:STATE_MULTI_LINE
接口:如果 aria-readonly 不是 "true",则为 EditableText
AX API[注 1] AXRole:AXTextArea
AXSubrole:<nil>
Android

待定

3.4.3.91 time
ARIA 规范 time
计算角色

time

MSAA + IAccessible2 角色:ROLE_SYSTEM_GROUPING
对象属性:xml-roles:time
UIA 控件类型:Text
本地化控件类型:time
注:创建一个单独的 UIA Text 类型控件。这不同于大多数 UIA 文本映射,后者只在页面文本模式中 创建范围。
ATK/AT-SPI 角色:ROLE_STATIC
对象属性:xml-roles:time
AX API[注 1] AXRole:AXGroup
AXSubrole:AXTimeGroup
Android

待定

3.4.3.92 timer
ARIA 规范 timer
计算角色

timer

MSAA + IAccessible2 对象属性:xml-roles:timer
UIA 控件类型:Group
本地化控件类型:timer
ATK/AT-SPI 角色:ROLE_TIMER
AX API[注 1] AXRole:AXGroup
AXSubrole:AXApplicationTimer
Android

待定

3.4.3.93 toolbar
ARIA 规范 toolbar
计算角色

toolbar

MSAA + IAccessible2 角色:ROLE_SYSTEM_TOOLBAR
UIA 控件类型:ToolBar
ATK/AT-SPI 角色:ROLE_TOOL_BAR
AX API[注 1] AXRole:AXToolbar
AXSubrole:<nil>
Android

待定

3.4.3.94 tooltip
ARIA 规范 tooltip
计算角色

tooltip

MSAA + IAccessible2 角色:ROLE_SYSTEM_TOOLTIP
UIA 控件类型:ToolTip
ATK/AT-SPI 角色:ROLE_TOOL_TIP
AX API[注 1] AXRole:AXGroup
AXSubrole:AXUserInterfaceTooltip
Android

待定

3.4.3.95 tree
ARIA 规范 tree
计算角色

tree

MSAA + IAccessible2 角色:ROLE_SYSTEM_OUTLINE
方法:IAccessible::accSelect()
方法:IAccessible::get_accSelection()
UIA 控件类型:Tree
ATK/AT-SPI 角色:ROLE_TREE
接口:Selection

由于 WAI-ARIA 不支持通过可访问性 API 修改选择,用户代理 MUST 对所有提供修改选择方式的 Selection 方法返回 false

AX API[注 1] AXRole:AXOutline
AXSubrole:<nil>
Android

待定

3.4.3.96 treegrid
ARIA 规范 treegrid
计算角色

treegrid

MSAA + IAccessible2 角色:ROLE_SYSTEM_OUTLINE
接口:IAccessibleTable2
方法:IAccessible::accSelect()
方法:IAccessible::get_accSelection()
UIA 控件类型:DataGrid
ATK/AT-SPI 角色:ROLE_TREE_TABLE
接口:Table
接口:Selection

由于 WAI-ARIA 不支持通过可访问性 API 修改选择,用户代理 MUST 对所有提供修改选择方式的 Selection 方法返回 false

AX API[注 1] AXRole:AXTable
AXSubrole:<nil>
Android

待定

3.4.3.97 treeitem
ARIA 规范 treeitem
计算角色

treeitem

MSAA + IAccessible2 角色:ROLE_SYSTEM_OUTLINEITEM
另见:状态和属性映射 表中的 aria-checked
UIA 控件类型:TreeItem
另见:状态和属性映射 表中的 aria-checked
ATK/AT-SPI 角色:ROLE_TREE_ITEM
另见:状态和属性映射 表中的 aria-checked
AX API[注 1] AXRole:AXRow
AXSubrole:AXOutlineRow
另见:状态和属性映射 表中的 aria-checked
Android

待定

[注 1] 用户代理应为 AXRoleDescription 返回用户可呈现的本地化字符串值。

[注 2] 本规范当前不包含关于用户代理何时应触发系统 警报事件的指南。以后可能会向规范中添加一些指南,但它将是建议 (SHOULD),而不是要求 (MUST)。

3.5 状态和属性映射

本节描述如何暴露 WAI-ARIA 状态属性

3.5.1 一般规则

  1. 用户代理 MUST 计算托管状态 VISIBLE/INVISIBLESHOWING/OFFSCREEN 等。 这通常以与没有 WAI-ARIA 属性存在的普通元素相同的方式完成。 FOCUSABLE/FOCUSED 状态可能会受 aria-activedescendant 影响。
  2. 用户代理 MUST 继续暴露原生语义,此外还要暴露 WAI-ARIA 状态和属性语义, 除非宿主语言允许显式的 WAI-ARIA 覆盖。例如,一个 HTML 复选框可以具有 aria-labelledby 属性, 但仍必须暴露原生 HTML 语义。
  3. 用户代理 MUST角色映射表中的定义,为某些角色暴露附加状态。
  4. 用户代理 MUST 为相关的 WAI-ARIA 属性 计算状态,并按可访问性 API状态和属性映射表中所指定的方式进行映射。要确定相关的 WAI-ARIA 属性,请参见 角色 定义 [WAI-ARIA-1.2]]。 当作者没有为必需属性提供值时,用户代理 SHOULD 按照已提供默认值的情况进行处理。
  5. 某些 WAI-ARIA 属性不是 全局的,并且只在某些角色上受支持。如果在不受支持的位置使用了非全局 WAI-ARIA 状态或属性, 用户代理 SHOULD NOT 将给定的 WAI-ARIA 属性映射到平台 可访问性 API。例如,如果 aria-checked="true" 被指定在 <div role="grid"> 上,则它 不应在 MSAA 实现中暴露为 STATE_SYSTEM_CHECKED
  6. 当显式或继承的 nonepresentation 角色应用于 一个元素时,用户代理 MUST 实现 Accessible Rich Internet Applications(WAI-ARIA)1.2 [WAI-ARIA-1.2]] 中定义的 nonepresentation 角色规则。

3.5.2 状态和属性 映射表

3.5.2.1 未映射

表中有许多地方将给定状态或属性声明为“未映射”。在某些情况下,这发生在 状态/属性的默认值上,并且等同于其不存在。用户代理可能会发现直接映射该值比检查它是否为 默认值更快。为了计算效率,如果暴露状态或属性值等同于不映射它,则用户代理 MAY 暴露该状态或 属性值。这些情况用星号标记。

在其他情况下,强制要求不得映射该状态/属性,因为暴露它意味着存在 相关的可供性。一个示例是 aria-grabbed。 它的缺失不仅表示该可访问对象未被抓取,还进一步将其定义为 不可抓取。这些情况标记为不带星号的“未映射”。

3.5.2.2 aria-activedescendant
ARIA 规范 aria-activedescendant
MSAA + IAccessible2 焦点更改
UIA 焦点更改
ATK/AT-SPI 焦点更改
AX API 焦点更改
属性:AXSelectedRows:指向活动 后代节点的指针
Android

待定

3.5.2.3 aria-atomic=true
ARIA 规范 aria-atomic=true
MSAA + IAccessible2 对象属性:atomic:true
对象属性: container-atomic:true
对象属性:所有后代上的 container-atomic:true
关系:IA2_RELATION_MEMBER_OF 指向 此元素(原子根)
另见:文档内容或 节点可见性的更改
UIA 属性:AriaProperties.atomictrue
另见:文档内容或 节点可见性的更改
ATK/AT-SPI 对象属性:atomic:true
对象属性: container-atomic:true
对象属性:所有后代上的 container-atomic:true
关系:RELATION_MEMBER_OF 指向此 元素(原子根)
另见:文档内容或 节点可见性的更改
AX API 属性:AXARIAAtomicYES
另见:文档内容或 节点可见性的更改
Android

待定

3.5.2.4 aria-atomic=false
ARIA 规范 aria-atomic=false
MSAA + IAccessible2 未映射*,但如果 映射:
对象属性:atomic:false
对象属性: container-atomic:false
对象属性:所有后代上的 container-atomic:false
关系:IA2_RELATION_MEMBER_OF 指向 此元素(原子根)
另见:文档内容或 节点可见性的更改
UIA 属性:AriaProperties.atomicfalse
另见:文档内容或 节点可见性的更改
ATK/AT-SPI 未映射*,但如果 映射:
对象属性:atomic:false
对象属性: container-atomic:false
对象属性:所有后代上的 container-atomic:false
关系:RELATION_MEMBER_OF 指向此 元素(原子根)
另见:文档内容或 节点可见性的更改
AX API 属性:AXARIAAtomicNO
另见:文档内容或 节点可见性的更改
Android

待定

3.5.2.5 aria-autocomplete=inlinelistboth
ARIA 规范 aria-autocomplete=inlinelistboth
MSAA + IAccessible2 对象属性: autocomplete:<value>
状态:IA2_STATE_SUPPORTS_AUTOCOMPLETION
UIA 未映射
ATK/AT-SPI 对象属性: autocomplete:<value>
状态:STATE_SUPPORTS_AUTOCOMPLETION
AX API 未映射
Android

待定

3.5.2.6 aria-autocomplete=none
ARIA 规范 aria-autocomplete=none
MSAA + IAccessible2 未映射*
UIA 未映射*
ATK/AT-SPI 未映射*
AX API 未映射*
Android

待定

3.5.2.7 aria-braillelabel
ARIA 规范 aria-braillelabel
MSAA + IAccessible2 对象属性: braillelabel:<value>
UIA 属性:AriaProperties.braillelabel<value>
ATK/AT-SPI 对象属性: braillelabel:<value>
AX API 属性:AXBrailleLabel
Android

待定

3.5.2.8 aria-brailleroledescription
ARIA 规范 aria-brailleroledescription
MSAA + IAccessible2 对象属性: brailleroledescription:<value>
UIA 属性:AriaProperties.brailleroledescription<value>
ATK/AT-SPI 对象属性: brailleroledescription:<value>
AX API 属性:AXBrailleRoleDescription
Android

待定

3.5.2.9 aria-brailleroledescription 未定义或为空字符串
ARIA 规范 aria-brailleroledescription 未定义或为空字符串
MSAA + IAccessible2 未映射
UIA 未映射
ATK/AT-SPI 未映射
AX API 未映射
Android

待定

3.5.2.10 aria-busy=true
ARIA 规范 aria-busy=true
MSAA + IAccessible2 状态:STATE_SYSTEM_BUSY
UIA 属性:AriaProperties.busytrue
ATK/AT-SPI 状态:STATE_BUSY
AX API 属性:AXElementBusyYES
Android

待定

3.5.2.11 aria-busy=false
ARIA 规范 aria-busy=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_BUSY
UIA 属性:AriaProperties.busyfalse
ATK/AT-SPI 状态:不暴露 STATE_BUSY
AX API 属性:AXElementBusyNO
Android

待定

3.5.2.12 aria-checked=true
ARIA 规范 aria-checked=true
MSAA + IAccessible2 状态:STATE_SYSTEM_CHECKED
对象属性:checkable:true
UIA 属性:Toggle.ToggleStateOn (1)
属性:SelectionItem.IsSelected: 对于 radiomenuitemradioTrue
ATK/AT-SPI 状态:STATE_CHECKABLE
状态:STATE_CHECKED
AX API 属性:AXValue1
属性:AXMenuItemMarkChar:对于 menuitemcheckboxmenuitemradio
Android

待定

3.5.2.13 aria-checked=false
ARIA 规范 aria-checked=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_CHECKED
对象属性:checkable:true
UIA 属性:Toggle.ToggleStateOff (0)
属性:SelectionItem.IsSelected: 对于 radiomenuitemradioFalse
ATK/AT-SPI 状态:STATE_CHECKABLE
状态:不暴露 STATE_CHECKED
AX API 属性:AXValue0
属性:AXMenuItemMarkChar: 对于 menuitemcheckboxmenuitemradio<nil>
Android

待定

3.5.2.14 aria-checked=mixed
ARIA 规范 aria-checked=mixed
MSAA + IAccessible2 状态:STATE_SYSTEM_MIXED
对象属性:checkable:true
UIA 属性:Toggle.ToggleStateIndeterminate (2)
ATK/AT-SPI 状态:STATE_INDETERMINATE
状态:STATE_CHECKABLE
状态:不暴露 STATE_CHECKED
AX API 属性:AXValue2
属性:AXMenuItemMarkChar: 对于 menuitemcheckboxmenuitemradio<nil>
Android

待定

3.5.2.15 aria-checked 未定义
ARIA 规范 aria-checked 未定义
MSAA + IAccessible2 未映射
UIA 未映射
ATK/AT-SPI 未映射
AX API 未映射
Android

待定

3.5.2.16 aria-colcount
ARIA 规范 aria-colcount
MSAA + IAccessible2 对象属性: colcount:<value>
方法:IAccessible2::groupPosition(): 单元格和表头上的 similarItemsInGroup=<value>
UIA 属性:Grid.ColumnCount<value>
ATK/AT-SPI 对象属性:colcount 应包含 作者提供的值。
方法:atk_table_get_n_columns() 应返回 实际列数。
AX API 属性:AXARIAColumnCount<value>
Android

待定

3.5.2.17 aria-colindex
ARIA 规范 aria-colindex
MSAA + IAccessible2 对象属性: colindex:<value>
方法:IAccessible2::groupPosition(): 单元格和表头上的 positionInGroup=<value>
UIA 属性:GridItem.Column<value>(从零开始)
ATK/AT-SPI 对象属性:colindex 应包含 作者提供的值。
方法:atk_table_cell_get_position() 应 返回实际的(从零开始的)列索引。
AX API 属性:AXARIAColumnIndex<value>
Android

待定

3.5.2.18 aria-colindextext
ARIA 规范 aria-colindextext
MSAA + IAccessible2 对象属性: colindextext:<value>
UIA 属性:AriaProperties.colindextext<value>
ATK/AT-SPI 对象属性: colindextext:<value>
AX API 属性:AXColumnIndexDescription<value>
Android

待定

3.5.2.19 aria-colspan
ARIA 规范 aria-colspan
MSAA + IAccessible2 对象属性: colspan:<value>
方法:IAccessibleTableCell::columnExtent()<value>
UIA 属性:GridItem.ColumnSpan<value>
ATK/AT-SPI 对象属性:colspan 应包含 作者提供的值。
方法:atk_table_cell_get_row_column_span() 应返回实际列跨度。
AX API 属性:AXColumnIndexRange.length<value>
Android

待定

3.5.2.20 aria-controls
ARIA 规范 aria-controls
MSAA + IAccessible2 关系:IA2_RELATION_CONTROLLER_FOR 指向 与 IDREF 匹配的可访问节点
反向关系:IA2_RELATION_CONTROLLED_BY 指向元素
另见:映射 附加关系
UIA 属性:ControllerFor:指向与 IDREF 匹配的 可访问节点的指针
ATK/AT-SPI 关系:RELATION_CONTROLLER_FOR 指向 与 IDREF 匹配的可访问节点
反向关系:RELATION_CONTROLLED_BY 指向 元素
另见:映射 附加关系
AX API 属性:AXLinkedUIElements:指向 与 IDREF 匹配的可访问节点的指针
Android

待定

3.5.2.21 aria-current 为 非 false 允许值
ARIA 规范 aria-current 为非 false 允许值
MSAA + IAccessible2 对象属性:current:<value>
UIA 属性:AriaProperties.current<value>
ATK/AT-SPI 对象属性: current:<value>
状态:STATE_ACTIVE
AX API 属性:AXARIACurrent<value>
Android

待定

3.5.2.22 aria-current 为无法识别的值
ARIA 规范 aria-current 为无法识别的值
MSAA + IAccessible2 对象属性:current:true
UIA 属性:AriaProperties.currenttrue
ATK/AT-SPI 对象属性:current:true
状态:STATE_ACTIVE
AX API 属性:AXARIACurrenttrue
Android

待定

3.5.2.23 aria-currentfalse 或未定义
ARIA 规范 aria-currentfalse 或未定义
MSAA + IAccessible2 未映射*
UIA 未映射*
ATK/AT-SPI 未映射*
AX API 未映射*
Android

待定

3.5.2.24 aria-describedby
ARIA 规范 aria-describedby
MSAA + IAccessible2 属性:accDescription<value>
关系:IA2_RELATION_DESCRIBED_BY 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:IA2_RELATION_DESCRIPTION_FOR 指向元素
另见:名称 计算映射 附加关系
UIA 属性:FullDescription<value>
另见:名称 计算
ATK/AT-SPI 属性:Description<value>
关系:RELATION_DESCRIBED_BY 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:RELATION_DESCRIPTION_FOR 指向元素
另见:名称 计算映射 附加关系
AX API 在 accessibilityCustomContent API 中,暴露为一个 AXCustomContent 对象,其中 { label: "description" } 且 `value` 设置为描述 字符串。
- 另见:名称 计算
Android

待定

3.5.2.25 aria-description
ARIA 规范 aria-description
MSAA + IAccessible2 属性:accDescription<value>
另见:名称 计算
UIA 属性:FullDescription<value>
另见:名称 计算
ATK/AT-SPI 属性:Description<value>
另见:名称 计算
AX API 在 accessibilityCustomContent API 中,暴露为一个 AXCustomContent 对象,其中 { label: "description" } 且 `value` 设置为描述 字符串。
另见:名称 计算
Android

待定

3.5.2.26 aria-details
ARIA 规范 aria-details
MSAA + IAccessible2 关系:IA2_RELATION_DETAILS 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:IA2_RELATION_DETAILS_FOR 指向元素
另见:映射 附加关系
UIA 属性:DescribedBy:指向与 IDREF 匹配的 可访问节点,如果被引用对象在可访问性 树中
ATK/AT-SPI 关系:RELATION_DETAILS 指向与 IDREF 匹配的 可访问节点,如果被引用对象在可访问性 树中
反向关系:RELATION_DETAILS_FOR 指向 元素
另见:映射 附加关系
AX API 未映射*
Android

待定

3.5.2.27 aria-disabled=true
ARIA 规范 aria-disabled=true
MSAA + IAccessible2 状态:STATE_SYSTEM_UNAVAILABLE
状态:所有具有 STATE_SYSTEM_FOCUSABLE 的 后代上的 STATE_SYSTEM_UNAVAILABLE
UIA 属性:IsEnabledfalse
ATK/AT-SPI 状态:不暴露 STATE_ENABLED
AX API 属性:AXEnabledNO
Android

待定

3.5.2.28 aria-disabled=false
ARIA 规范 aria-disabled=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_UNAVAILABLE
UIA 属性:IsEnabledtrue
ATK/AT-SPI 状态:STATE_ENABLED
AX API 属性:AXEnabledYES
Android

待定

3.5.2.30 aria-dropeffect=none(已弃用)
ARIA 规范 aria-dropeffect=none
MSAA + IAccessible2 对象属性:如果没有其他有效令牌,则为 dropeffect:none
未映射*,如果 作者未指定
UIA 未映射*
ATK/AT-SPI 对象属性:如果没有其他有效令牌,则为 dropeffect:none
未映射*,如果 作者未指定
AX API 未映射*
Android

待定

3.5.2.31 aria-errormessage
ARIA 规范 aria-errormessage
MSAA + IAccessible2 关系:IA2_RELATION_ERROR 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:IA2_RELATION_ERROR_FOR 指向 元素
另见:映射 附加关系
UIA 属性:ControllerFor:指向目标 可访问对象的指针
ATK/AT-SPI 关系:RELATION_ERROR_MESSAGE 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:RELATION_ERROR_FOR 指向 元素
另见:映射 附加关系
AX API 属性:AXErrorMessageElements:指向 与 IDREF 匹配的可访问节点的指针
Android

待定

3.5.2.32 aria-expanded=true
ARIA 规范 aria-expanded=true
MSAA + IAccessible2 状态:STATE_SYSTEM_EXPANDED
UIA 属性:ExpandCollapse.ExpandCollapseStateExpanded
ATK/AT-SPI 状态:STATE_EXPANDABLE
状态:STATE_EXPANDED
AX API 属性:AXExpandedYES
Android

待定

3.5.2.33 aria-expanded=false
ARIA 规范 aria-expanded=false
MSAA + IAccessible2 状态:STATE_SYSTEM_COLLAPSED
UIA 属性:ExpandCollapse.ExpandCollapseStateCollapsed
ATK/AT-SPI 状态:STATE_EXPANDABLE
状态:不暴露 STATE_EXPANDED
AX API 属性:AXExpandedNO
Android

待定

3.5.2.34 aria-expanded 未定义
ARIA 规范 aria-expanded 未定义
MSAA + IAccessible2 未映射
UIA 未映射
ATK/AT-SPI 未映射
AX API 未映射
Android

待定

3.5.2.35 aria-flowto
ARIA 规范 aria-flowto
MSAA + IAccessible2 关系:IA2_RELATION_FLOW_TO 指向 与 IDREF 匹配的可访问节点
反向关系:IA2_RELATION_FLOW_FROM 指向 元素
另见:映射 附加关系
UIA 属性:FlowsTo:指向与 IDREF 匹配的可访问节点的指针
ATK/AT-SPI 关系:RELATION_FLOWS_TO 指向与 IDREF 匹配的可访问节点
反向关系:RELATION_FLOWS_FROM 指向 元素
另见:映射 附加关系
AX API 属性:AXLinkedUIElements:指向 与 IDREF 匹配的可访问节点的指针
Android

待定

3.5.2.36 aria-grabbed=true
ARIA 规范 aria-grabbed=true
MSAA + IAccessible2 对象属性:grabbed:true
UIA 属性:AriaProperties.grabbedtrue
ATK/AT-SPI 对象属性:grabbed:true
AX API 属性:AXGrabbedYES
Android

待定

3.5.2.37 aria-grabbed=false
ARIA 规范 aria-grabbed=false
MSAA + IAccessible2 对象属性:grabbed:false
UIA 属性:AriaProperties.grabbedfalse
ATK/AT-SPI 对象属性:grabbed:false
AX API 属性:AXGrabbedNO
Android

待定

3.5.2.38 aria-grabbed 未定义
ARIA 规范 aria-grabbed 未定义
MSAA + IAccessible2 未映射
UIA 未映射
ATK/AT-SPI 未映射
AX API 未映射
Android

待定

3.5.2.39 aria-haspopup=true
ARIA 规范 aria-haspopup=true
MSAA + IAccessible2 状态:STATE_SYSTEM_HASPOPUP
对象属性:haspopup:menu
UIA 控件模式:ExpandCollapse 另见:aria-expanded
ATK/AT-SPI 状态:STATE_HAS_POPUP
对象属性:haspopup:menu
AX API 属性:AXPopupValue:menu
动作:AXShowMenu
Android

待定

3.5.2.40 aria-haspopup=false
ARIA 规范 aria-haspopup=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_HASPOPUP
对象属性:haspopup:false
UIA 未映射*
ATK/AT-SPI 未映射*
AX API 未映射*
Android

待定

3.5.2.41 aria-haspopup=dialog
ARIA 规范 aria-haspopup=dialog
MSAA + IAccessible2 状态:STATE_SYSTEM_HASPOPUP
对象属性:haspopup:dialog
UIA 控件模式:ExpandCollapse
另见:aria-expanded
ATK/AT-SPI 状态:STATE_HAS_POPUP
对象属性:haspopup:dialog
AX API 属性:AXPopupValue:dialog
动作:AXShowMenu
Android

待定

3.5.2.42 aria-haspopup=grid
ARIA 规范 aria-haspopup=grid
MSAA + IAccessible2 状态:STATE_SYSTEM_HASPOPUP
对象属性:haspopup:grid
UIA 控件模式:ExpandCollapse
另见:aria-expanded
ATK/AT-SPI 状态:STATE_HAS_POPUP
对象属性:haspopup:grid
AX API 属性:AXPopupValue:grid
动作:AXShowMenu
Android

待定

3.5.2.43 aria-haspopup=listbox
ARIA 规范 aria-haspopup=listbox
MSAA + IAccessible2 状态:STATE_SYSTEM_HASPOPUP
对象属性:haspopup:listbox
UIA 控件模式:ExpandCollapse
另见:aria-expanded
ATK/AT-SPI 状态:STATE_HAS_POPUP
对象属性:haspopup:listbox
AX API 属性:AXPopupValue:listbox
动作:AXShowMenu
Android

待定

3.5.2.44 aria-haspopup=menu
ARIA 规范 aria-haspopup=menu
MSAA + IAccessible2 状态:STATE_SYSTEM_HASPOPUP
对象属性:haspopup:menu
UIA 控件模式:ExpandCollapse
另见:aria-expanded
ATK/AT-SPI 状态:STATE_HAS_POPUP
对象属性:haspopup:menu
AX API 属性:AXPopupValue:menu
动作:AXShowMenu
Android

待定

3.5.2.45 aria-haspopup=tree
ARIA 规范 aria-haspopup=tree
MSAA + IAccessible2 状态:STATE_SYSTEM_HASPOPUP
对象属性:haspopup:tree
UIA 控件模式:ExpandCollapse
另见:aria-expanded
ATK/AT-SPI 状态:STATE_HAS_POPUP
对象属性:haspopup:tree
AX API 属性:AXPopupValue:tree
动作:AXShowMenu
Android

待定

3.5.2.46 未聚焦元素上的 aria-hidden=true
ARIA 规范 aria-hidden=true 于未聚焦元素上
MSAA + IAccessible2 元素 SHOULD NOT 被 暴露
另见:WAI-ARIA 规范中的将元素包含进可访问性树
UIA 元素 SHOULD NOT 被 暴露
另见:WAI-ARIA 规范中的将元素包含进可访问性树
ATK/AT-SPI 元素 SHOULD NOT 被 暴露
另见:WAI-ARIA 规范中的将元素包含进可访问性树
AX API 元素 SHOULD NOT 被 暴露
另见:WAI-ARIA 规范中的将元素包含进可访问性树
Android

待定

3.5.2.47 当元素被聚焦或触发可访问性事件时的 aria-hidden=true
ARIA 规范 aria-hidden=true 当元素被聚焦或触发可访问性事件时
MSAA + IAccessible2 对象属性:hidden:true
另见:WAI-ARIA 规范中的将元素包含进可访问性树
UIA 属性:AriaProperties.hiddentrue
另见:WAI-ARIA 规范中的将元素包含进可访问性树
ATK/AT-SPI 对象属性:hidden:true
另见:WAI-ARIA 规范中的将元素包含进可访问性树
AX API 未映射
另见:WAI-ARIA 规范中的将元素包含进可访问性树
Android

待定

3.5.2.48 aria-hidden=false
ARIA 规范 aria-hidden=false
MSAA + IAccessible2 未映射
UIA 未映射
ATK/AT-SPI 未映射
AX API 未映射
Android

待定

3.5.2.49 aria-invalid=true
ARIA 规范 aria-invalid=true
MSAA + IAccessible2 状态:IA2_STATE_INVALID_ENTRY
文本属性:invalid:true
UIA 属性:IsDataValidForFormfalse
ATK/AT-SPI 状态:STATE_INVALID_ENTRY
文本属性:invalid:true
AX API 属性:AXInvalidtrue
Android

待定

3.5.2.50 aria-invalid=false
ARIA 规范 aria-invalid=false
MSAA + IAccessible2 状态:不暴露 IA2_STATE_INVALID_ENTRY
UIA 属性:IsDataValidForFormtrue
ATK/AT-SPI 状态:不暴露 STATE_INVALID_ENTRY
AX API 属性:AXInvalidfalse
Android

待定

3.5.2.51 aria-invalid=spellinggrammar
ARIA 规范 aria-invalid=spellinggrammar
MSAA + IAccessible2 状态:IA2_STATE_INVALID_ENTRY
文本属性:invalid:<value>
UIA 属性:IsDataValidForForm<value>
ATK/AT-SPI 状态:STATE_INVALID_ENTRY
文本属性:invalid:<value>
AX API 属性:AXInvalid<value>
Android

待定

3.5.2.52 aria-invalid 为无法识别的值
ARIA 规范 aria-invalid 为无法识别的值
MSAA + IAccessible2 状态:IA2_STATE_INVALID_ENTRY
文本属性:invalid:true
UIA 属性:IsDataValidForFormfalse
ATK/AT-SPI 状态:STATE_INVALID_ENTRY
文本属性:invalid:true
AX API 属性:AXInvalidtrue
Android

待定

3.5.2.53 aria-keyshortcuts
ARIA 规范 aria-keyshortcuts
MSAA + IAccessible2 属性:accKeyboardShortcut<value>
UIA 属性:AcceleratorKey<value>
ATK/AT-SPI 对象属性: keyshortcuts:<value>
AX API 属性:AXKeyShortcutsValue<value>
Android

待定

3.5.2.54 aria-label
ARIA 规范 aria-label
MSAA + IAccessible2 属性:accName<value>
另见:名称 计算
UIA 属性:Name<value>
另见:名称 计算
ATK/AT-SPI 属性:Name<value>
另见:名称 计算
AX API 属性:AXTitle<value>
另见:名称 计算
Android

待定

3.5.2.55 aria-labelledby
ARIA 规范 aria-labelledby
MSAA + IAccessible2 属性:accName<value>
关系:IA2_RELATION_LABELLED_BY 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:IA2_RELATION_LABEL_FOR 指向 元素
另见:名称 计算映射 附加关系
UIA 属性:Name<value>
属性:LabeledBy:指向与 IDREF 匹配的可访问节点,如果被引用对象在可访问性 树中
另见:名称 计算
ATK/AT-SPI 属性:Name<value>
关系:RELATION_LABELLED_BY 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:RELATION_LABEL_FOR 指向 元素
另见:名称 计算映射 附加关系
AX API 属性:AXTitle<value>
属性:AXTitleUIElement 指向与 IDREF 匹配的可访问节点,如果只有一个被引用元素且该元素在 可访问性树中
另见:名称 计算
Android

待定

3.5.2.56 heading 上的 aria-level
ARIA 规范 aria-level 在非 heading
MSAA + IAccessible2 对象属性:level:<value>
方法:IAccessible2::groupPosition(): 在支持 aria-posinsetaria-setsize 的角色上为 groupLevel=<value>
另见:groupPosition()
UIA 属性:AriaProperties.level<value>
ATK/AT-SPI 对象属性:level:<value>
AX API 属性:AXDisclosureLevel<value>(从零开始),当用于大纲行(如 treeitemgroup)时
Android

待定

3.5.2.57 heading 上的 aria-level
ARIA 规范 aria-levelheading
MSAA + IAccessible2 对象属性:level:<value>
UIA 属性:AriaProperties.level<value>
属性:StyleId_Heading<value>
ATK/AT-SPI 对象属性:level:<value>
AX API 属性:AXValue<value>
Android

待定

3.5.2.58 aria-live=assertive
ARIA 规范 aria-live=assertive
MSAA + IAccessible2 对象属性:live:assertive
对象属性: container-live:assertive
对象属性:所有后代上的 container-live:assertive
另见:文档内容或 节点可见性的更改
UIA 属性:LiveSetting"assertive"
另见:文档内容或 节点可见性的更改
ATK/AT-SPI 对象属性:live:assertive
对象属性: container-live:assertive
对象属性:所有后代上的 container-live:assertive
另见:文档内容或 节点可见性的更改
AX API 属性:AXARIALive"assertive"
另见:文档内容或 节点可见性的更改
Android

待定

3.5.2.59 aria-live=polite
ARIA 规范 aria-live=polite
MSAA + IAccessible2 对象属性:live:polite
对象属性: container-live:polite
对象属性:所有后代上的 container-live:polite
另见:文档内容或 节点可见性的更改
UIA 属性:LiveSetting"polite"
另见:文档内容或 节点可见性的更改
ATK/AT-SPI 对象属性:live:polite
对象属性: container-live:polite
对象属性:所有后代上的 container-live:polite
另见:文档内容或 节点可见性的更改
AX API 属性:AXARIALive"polite"
另见:文档内容或 节点可见性的更改
Android

待定

3.5.2.60 aria-live=off
ARIA 规范 aria-live=off
MSAA + IAccessible2 对象属性:live:off
对象属性:container-live:off
对象属性:所有后代上的 container-live:off
UIA 属性:LiveSetting"off"
ATK/AT-SPI 对象属性:live:off
对象属性:container-live:off
对象属性:所有后代上的 container-live:off
AX API 属性:AXARIALive"off"
Android

待定

3.5.2.61 aria-modal=true
ARIA 规范 aria-modal=true
MSAA + IAccessible2 状态:IA2_STATE_MODAL
UIA 属性:Window.IsModaltrue
ATK/AT-SPI 状态:STATE_MODAL
AX API 剪除可访问性树,使背景内容不再暴露。 不在与带有 aria-modal="true"元素相对应的可访问 对象上设置特定属性。 只暴露以该模态可访问对象为根的树。
Android

待定

3.5.2.62 aria-modal=false
ARIA 规范 aria-modal=false
MSAA + IAccessible2 状态:不暴露 IA2_STATE_MODAL
UIA 属性:Window.IsModalfalse
ATK/AT-SPI 状态:不暴露 STATE_MODAL
AX API 扩展可访问性树,使背景内容被暴露。不在与带有 aria-modal="false"元素相对应的可访问 对象上设置特定属性。
Android

待定

3.5.2.63 aria-multiline=true
ARIA 规范 aria-multiline=true
MSAA + IAccessible2 状态:IA2_STATE_MULTI_LINE
状态:不暴露 IA2_STATE_SINGLE_LINE
UIA 属性:AriaProperties.multilinetrue
ATK/AT-SPI 状态:STATE_MULTI_LINE
状态:不暴露 STATE_SINGLE_LINE
AX API 未映射
另见:角色映射表中的 textbox
Android

待定

3.5.2.64 aria-multiline=false
ARIA 规范 aria-multiline=false
MSAA + IAccessible2 状态:IA2_STATE_SINGLE_LINE
状态:不暴露 IA2_STATE_MULTI_LINE
UIA 未映射
ATK/AT-SPI 状态:STATE_SINGLE_LINE
状态:不暴露 STATE_MULTI_LINE
AX API 未映射
另见:角色映射表中的 textbox
Android

待定

3.5.2.65 aria-multiselectable=true
ARIA 规范 aria-multiselectable=true
MSAA + IAccessible2 状态:STATE_SYSTEM_MULTISELECTABLE
状态:STATE_SYSTEM_EXTSELECTABLE
另见:选择 以了解可访问性事件的详细信息
UIA 属性:Selection.CanSelectMultipletrue
另见:选择 以了解可访问性事件的详细信息
ATK/AT-SPI 状态:STATE_MULTISELECTABLE
另见:选择 以了解可访问性事件的详细信息
AX API 属性:AXIsMultiSelectableYES
另见:选择 以了解可访问性事件的详细信息
Android

待定

3.5.2.66 aria-multiselectable=false
ARIA 规范 aria-multiselectable=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_MULTISELECTABLE
状态:不暴露 STATE_SYSTEM_EXTSELECTABLE
另见:选择 以了解可访问性事件的详细信息
UIA 未映射*
ATK/AT-SPI 状态:不暴露 STATE_MULTISELECTABLE
AX API 未映射*
Android

待定

3.5.2.67 aria-orientation=horizontal
ARIA 规范 aria-orientation=horizontal
MSAA + IAccessible2 状态:IA2_STATE_HORIZONTAL
状态:不暴露 IA2_STATE_VERTICAL
UIA 属性:Orientationhorizontal
ATK/AT-SPI 状态:STATE_HORIZONTAL
状态:不暴露 STATE_VERTICAL
AX API 属性:AXOrientationAXHorizontalOrientation
Android

待定

3.5.2.68 aria-orientation=vertical
ARIA 规范 aria-orientation=vertical
MSAA + IAccessible2 状态:IA2_STATE_VERTICAL
状态:不暴露 IA2_STATE_HORIZONTAL
UIA 属性:Orientationvertical
ATK/AT-SPI 状态:STATE_VERTICAL
状态:不暴露 STATE_HORIZONTAL
AX API 属性:AXOrientationAXVerticalOrientation
Android

待定

3.5.2.69 aria-orientation 未定义
ARIA 规范 aria-orientation 未定义
MSAA + IAccessible2 未映射*
UIA 未映射*
ATK/AT-SPI 状态:不暴露 STATE_VERTICAL
状态:不暴露 STATE_HORIZONTAL
AX API 属性:AXOrientationAXUnknownOrientation
Android

待定

3.5.2.70 aria-owns
ARIA 规范 aria-owns
MSAA + IAccessible2

用户代理 MAY 将此属性所引用的元素暴露为 当前元素的子项。在这种情况下,如果发现多个 aria-owns 关系,则只使用第一个。如果未修改可访问性树,则暴露为:

关系:IA2_RELATION_NODE_PARENT_OF 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:IA2_RELATION_NODE_CHILD_OF 指向元素
另见:映射 附加关系
UIA 将此属性所引用的元素暴露为当前元素的子项。如果发现多个 aria-owns 关系,则只使用第一个。
ATK/AT-SPI

用户代理 MAY 将此属性所引用的元素暴露为 当前元素的子项。在这种情况下,如果发现多个 aria-owns 关系,则只使用第一个。如果未修改可访问性树,则暴露为:

关系:RELATION_NODE_PARENT_OF 指向 与 IDREF 匹配的可访问节点,如果被引用对象在 可访问性树中
反向关系:RELATION_NODE_CHILD_OF 指向 元素
另见:映射 附加关系
AX API 属性:AXOwns:指向与 IDREF 匹配的可访问节点的指针
Android

待定

3.5.2.71 aria-placeholder
ARIA 规范 aria-placeholder
MSAA + IAccessible2 对象属性: placeholder-text:<value>
UIA 属性:HelpText<value>
ATK/AT-SPI 对象属性: placeholder-text:<value>
AX API 属性:AXPlaceholderValue<value>
Android

待定

3.5.2.72 aria-posinset
ARIA 规范 aria-posinset
MSAA + IAccessible2 对象属性: posinset:<value>
另见:组 位置
UIA 属性:AriaProperties.posinset<value>
另见:组 位置
ATK/AT-SPI 对象属性: posinset:<value>
另见:组 位置
AX API 属性:AXARIAPosInSet<value>
另见:组 位置
Android

待定

3.5.2.73 aria-pressed=true
ARIA 规范 aria-pressed=true
MSAA + IAccessible2 状态:STATE_SYSTEM_PRESSED
另见:button 具有 aria-pressed 的已定义值
UIA 属性:Toggle.ToggleStateOn (1)
ATK/AT-SPI 状态:STATE_PRESSED
另见:button 具有 aria-pressed 的已定义值
AX API 属性:AXValue1
另见:button 具有 aria-pressed 的已定义值
Android

待定

3.5.2.74 aria-pressed=mixed
ARIA 规范 aria-pressed=mixed
MSAA + IAccessible2 状态:STATE_SYSTEM_MIXED
另见:button 具有 aria-pressed 的已定义值
UIA 属性:Toggle.ToggleStateIndeterminate (2)
ATK/AT-SPI 状态:STATE_INDETERMINATE
另见:button 具有 aria-pressed 的已定义值
AX API 属性:AXValue2
另见:button 具有 aria-pressed 的已定义值
Android

待定

3.5.2.75 aria-pressed=false
ARIA 规范 aria-pressed=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_PRESSED
另见:button 具有 aria-pressed 的已定义值
UIA 属性:Toggle.ToggleStateOff (3)
ATK/AT-SPI 状态:不暴露 STATE_PRESSED
另见:button 具有 aria-pressed 的已定义值
AX API 属性:AXValue0
另见:button 具有 aria-pressed 的已定义值
Android

待定

3.5.2.76 aria-pressed 未定义
ARIA 规范 aria-pressed 未定义
MSAA + IAccessible2 未映射*
UIA 未映射*
ATK/AT-SPI 未映射*
AX API 未映射*
Android

待定

3.5.2.77 aria-readonly=true
ARIA 规范 aria-readonly=true
MSAA + IAccessible2 状态:STATE_SYSTEM_READONLY
UIA 属性:Value.IsReadOnlytrue, 如果元素实现 IValueProvider
属性:RangeValue.IsReadOnlytrue,如果元素实现 IRangeValueProvider
属性:AriaProperties.readonlytrue
ATK/AT-SPI 状态:STATE_READ_ONLY
状态:在文本输入角色上不暴露 STATE_EDITABLE
状态:在支持 aria-checked 的角色上不暴露 STATE_CHECKABLE
状态:当用于 radiogroup 时,不在 radio 后代上暴露 STATE_CHECKABLE
AX API 方法:AXUIElementIsAttributeSettable(AXValue)NO
Android

待定

3.5.2.78 aria-readonly=false
ARIA 规范 aria-readonly=false
MSAA + IAccessible2 状态:不暴露 STATE_SYSTEM_READONLY
状态:IA2_STATE_EDITABLE
UIA 属性:Value.IsReadOnlyfalse, 如果元素实现 IValueProvider
属性:RangeValue.IsReadOnlyfalse,如果元素实现 IRangeValueProvider
属性:AriaProperties.readonlyfalse
ATK/AT-SPI 状态:不暴露 STATE_READ_ONLY
AX API 方法:AXUIElementIsAttributeSettable(AXValue)YES
Android

待定

3.5.2.79 gridcell 上未指定 aria-readonly
ARIA 规范 aria-readonlygridcell 上未指定
MSAA + IAccessible2 gridcell MUST 从包含它的 gridtreegrid 继承作者提供的任何 aria-readonly 值。按 aria-readonly="true"aria-readonly="false" 所述,在 gridcell 上暴露继承的值。
UIA gridcell MUST 从包含它的 gridtreegrid 继承作者提供的任何 aria-readonly 值。按 aria-readonly="true"aria-readonly="false" 所述,在 gridcell 上暴露继承的值。
ATK/AT-SPI gridcell MUST 从包含它的 gridtreegrid 继承作者提供的任何 aria-readonly 值。按 aria-readonly="true"aria-readonly="false" 所述,在 gridcell 上暴露继承的值。
AX API gridcell MUST 从包含它的 gridtreegrid 继承作者提供的任何 aria-readonly 值。按 aria-readonly="true"aria-readonly="false" 所述,在 gridcell 上暴露继承的值。
Android

待定

3.5.2.80 aria-relevant
ARIA 规范 aria-relevant
MSAA + IAccessible2 对象属性: relevant:<value>
对象属性: container-relevant:<value>
对象属性: 所有后代上的 container-relevant:<value>
另见:文档内容或 节点可见性的更改
UIA 属性:AriaProperties.relevant<value>
另见:文档内容或 节点可见性的更改
ATK/AT-SPI 对象属性: relevant:<value>
对象属性: container-relevant:<value>
对象属性: 所有后代上的 container-relevant:<value>
另见:文档内容或 节点可见性的更改
AX API 属性:AXARIARelevant<value>
另见:文档内容或 节点可见性的更改
Android

待定

3.5.2.81 aria-required=true
ARIA 规范 aria-required=true
MSAA + IAccessible2 状态:IA2_STATE_REQUIRED
UIA 属性:IsRequiredForFormtrue
ATK/AT-SPI 状态:STATE_REQUIRED
AX API 属性:AXRequiredYES
Android

待定

3.5.2.82 aria-required=false
ARIA 规范 aria-required=false
MSAA + IAccessible2 未映射*
UIA 未映射*
ATK/AT-SPI 未映射*
AX API 未映射*
Android

待定

3.5.2.83 aria-roledescription
ARIA 规范 aria-roledescription
MSAA + IAccessible2 方法:localizedExtendedRole()<value>
UIA 本地化控件类型:<value>
ATK/AT-SPI 对象属性: roledescription:<value>
AX API 属性:AXRoleDescription<value>
Android

待定

3.5.2.84 aria-roledescription 未定义或为空字符串
ARIA 规范 aria-roledescription 未定义 或为空字符串
MSAA + IAccessible2 未映射
UIA 本地化控件类型被定义为为元素角色指定的类型: 如果提供了 role 属性,则基于显式角色;否则,基于宿主语言的隐式 角色。
ATK/AT-SPI 未映射
AX API AXRoleDescription 被定义为为元素角色指定的内容: 如果提供了 role 属性,则基于显式角色; 否则,基于宿主语言的隐式角色。
Android

待定

3.5.2.85 aria-rowcount
ARIA 规范 aria-rowcount
MSAA + IAccessible2 对象属性: rowcount:<value>
方法:IAccessible2::groupPosition(): 在行上为 similarItemsInGroup=<value>
UIA 属性:Grid.RowCount<value>
ATK/AT-SPI 对象属性:rowcount 应包含作者 提供的值。
方法:atk_table_get_n_rows() 应返回 实际行数。
AX API 属性:AXARIARowCount<value>
Android

待定

3.5.2.86 aria-rowindex
ARIA 规范 aria-rowindex
MSAA + IAccessible2 对象属性: rowindex:<value>
方法:IAccessible2::groupPosition(): 在行上为 positionInGroup=<value>
UIA 属性:GridItem.Row<value>(从零开始)
ATK/AT-SPI 对象属性:rowindex 应包含作者 提供的值。
方法:atk_table_cell_get_position() 应 返回实际的(从零开始的)行索引。
AX API 属性:AXARIARowIndex<value>
Android

待定

3.5.2.87 aria-rowindextext
ARIA 规范 aria-rowindextext
MSAA + IAccessible2 对象属性: rowindextext:<value>
UIA 属性:AriaProperties.rowindextext<value>
ATK/AT-SPI 对象属性: rowindextext:<value>
AX API 属性:AXRowIndexDescription<value>
Android

待定

3.5.2.88 aria-rowspan
ARIA 规范 aria-rowspan
MSAA + IAccessible2 对象属性: rowspan:<value>
方法:IAccessibleTableCell::rowExtent()column=<value>
UIA 属性:GridItem.RowSpan<value>
ATK/AT-SPI 对象属性:rowspan 应包含作者 提供的值。
方法:atk_table_cell_get_row_column_span() 应返回实际行跨度。
AX API 属性:AXRowIndexRange.length<value>
Android

待定

3.5.2.89 aria-selected=true
ARIA 规范 aria-selected=true
MSAA + IAccessible2 状态:STATE_SYSTEM_SELECTABLE
状态:STATE_SYSTEM_SELECTED
另见:选择 以了解可访问性事件的详细信息
UIA 属性:SelectionItem.IsSelectedtrue
ATK/AT-SPI 状态:STATE_SELECTABLE
状态:STATE_SELECTED
另见:选择 以了解可访问性事件的详细信息
AX API 属性:AXSelectedYES
Android

待定

3.5.2.90 aria-selected=false
ARIA 规范 aria-selected=false
MSAA + IAccessible2 状态:STATE_SYSTEM_SELECTABLE
状态:不暴露 STATE_SYSTEM_SELECTED
另见:选择 以了解可访问性事件的详细信息
UIA 属性:SelectionItem.IsSelectedfalse
ATK/AT-SPI 状态:STATE_SELECTABLE
状态:不暴露 STATE_SELECTED
另见:选择 以了解可访问性事件的详细信息
AX API 属性:AXSelectedNO
Android

待定

3.5.2.91 aria-selected 未定义
ARIA 规范 aria-selected 未定义
MSAA + IAccessible2 未映射
UIA 未映射
ATK/AT-SPI 未映射
AX API 未映射
Android

待定

3.5.2.92 aria-setsize
ARIA 规范 aria-setsize
MSAA + IAccessible2 对象属性: setsize:<value>
另见:组 位置
UIA 属性:AriaProperties.setsize<value>
另见:组 位置
ATK/AT-SPI

如果作者提供的 aria-setsize 值为 -1, 则暴露值应基于 DOM 中对象的数量。

对象属性: setsize:<value>
状态:如果作者提供的值为 -1,则为 STATE_INDETERMINATE
另见:组 位置
AX API 属性:AXARIASetSize<value>
另见:组 位置
Android

待定

3.5.2.93 aria-sort=ascending
ARIA 规范 aria-sort=ascending
MSAA + IAccessible2 对象属性:sort:ascending
UIA 属性:AriaProperties.sortascending
属性:ItemStatus:如果该元素映射到 HeaderItem 控件类型,则为 ascending
ATK/AT-SPI 对象属性:sort:ascending
AX API 属性:AXSortDirectionAXAscendingSortDirection
Android

待定

3.5.2.94 aria-sort=descending
ARIA 规范 aria-sort=descending
MSAA + IAccessible2 对象属性:sort:descending
UIA 属性:AriaProperties.sortdescending
属性:ItemStatus:如果该元素映射到 HeaderItem 控件类型,则为 descending
ATK/AT-SPI 对象属性:sort:descending
AX API 属性:AXSortDirectionAXDescendingSortDirection
Android

待定

3.5.2.95 aria-sort=other
ARIA 规范 aria-sort=other
MSAA + IAccessible2 对象属性:sort:other
UIA 属性:AriaProperties.sortother
属性:ItemStatus:如果该元素映射到 HeaderItem 控件类型,则为 other
ATK/AT-SPI 对象属性:sort:other
AX API 属性:AXSortDirectionAXUnknownSortDirection
Android

待定

3.5.2.96 aria-sort=none
ARIA 规范 aria-sort=none
MSAA + IAccessible2 对象属性:如果该值不是未指定,则为 sort:none
UIA 未映射*
ATK/AT-SPI 对象属性:如果该值不是未指定,则为 sort:none
AX API 未映射*
Android

待定

3.5.2.97 aria-valuemax
ARIA 规范 aria-valuemax
MSAA + IAccessible2 方法:IAccessibleValue::maximumValue()<value>
另见:处理 状态和属性的作者错误
UIA 属性:RangeValue.Maximum<value>
另见:处理 状态和属性的作者错误
ATK/AT-SPI 方法:atk_value_get_maximum_value()<value>
另见:处理 状态和属性的作者错误
AX API 属性:AXMaxValue<value>
另见:处理 状态和属性的作者错误
Android

待定

3.5.2.98 aria-valuemin
ARIA 规范 aria-valuemin
MSAA + IAccessible2 方法:IAccessibleValue::minimumValue()<value>
另见:处理 状态和属性的作者错误
UIA 属性:RangeValue.Minimum<value>
另见:处理 状态和属性的作者错误
ATK/AT-SPI 方法:atk_value_get_minimum_value()<value>
另见:处理 状态和属性的作者错误
AX API 属性:AXMinValue<value>
另见:处理 状态和属性的作者错误
Android

待定

3.5.2.99 aria-valuenow
ARIA 规范 aria-valuenow
MSAA + IAccessible2 方法:IAccessibleValue::currentValue()<value>
方法:如果未定义 aria-valuetext,则 IAccessible::get_accValue()<value>
另见:处理 状态和属性的作者错误
UIA 属性:RangeValue.Value<value>
另见:处理 状态和属性的作者错误
ATK/AT-SPI 方法:atk_value_get_current_value()<value>
另见:处理 状态和属性的作者错误
AX API 属性:AXValue<value>
另见:处理 状态和属性的作者错误
Android

待定

3.5.2.100 aria-valuetext
ARIA 规范 aria-valuetext
MSAA + IAccessible2 方法:IAccessible::get_accValue()<value>
对象属性: valuetext:<value>
另见:处理 状态和属性的作者错误
UIA 属性:Value.Value<value>
另见:处理 状态和属性的作者错误
ATK/AT-SPI 对象属性: valuetext:<value>
另见:处理 状态和属性的作者错误
AX API 属性:AXValueDescription<value>
另见:处理 状态和属性的作者错误
Android

待定

3.6 需要 附加计算的特殊处理

3.6.1 名称和描述

有关如何计算可访问名称可访问描述的信息, 请参见 可访问名称和 描述计算规范中标题为 可访问名称和描述计算的章节。

3.6.2 关系

GUI 中,控件之间通常存在一些关系,这些关系可以通过编程方式暴露 给辅助技术WAI-ARIA 提供了几个关系属性,它们全局 适用于任何元素aria-controlsaria-describedbyaria-flowtoaria-labelledbyaria-ownsaria-posinsetaria-setsize。因此,在计算它们之前不需要检查 角色用户代理只需按照标题为 可访问性 API状态和属性映射章节中的定义,映射这些关系即可。

3.6.2.1 反向关系

当一个元素的 ID 被另一个属性中的另一个元素引用时,就存在反向关系。对于 支持反向关系的 API,当一个元素的 ID 被另一个元素的关系属性引用,且被引用元素位于可访问性树中时,用户代理 MUST 使用 状态和属性映射表中定义的映射。所有 WAI-ARIA 引用都必须指向 可访问性树中作为可访问对象暴露的元素。当被引用对象未在 可访问性树中暴露时(例如因为它是隐藏的),该引用 为空。aria-labelledbyaria-describedby 还有一个附加 功能,它允许从被引用元素中提取扁平化字符串,以填充可访问性 API 的名称或 描述字段。此功能在 名称和描述章节中描述。

特殊情况:如果同时使用了 aria-labelledbyHTML <label for= … >,则用户代理 MUST 使用 WAI-ARIA 关系,并且 MUST 忽略 HTML 标签关系。

注意,aria-describedby 可能引用结构化或 交互式信息,而用户可能希望能够 导航到内容的不同部分。用户代理 MAY 提供一种 方式,使用户能够导航到 aria-describedby 所引用的结构化信息,并且辅助技术 SHOULD 提供这样的方法。

3.6.2.2 隐含的反向 关系

除了由 WAI-ARIA 属性定义的显式关系之外, 在另外两种情况下也会隐含反向 关系:具有 role="treeitem" 且祖先没有 aria-owns 属性的元素,以及具有 aria-atomic 属性的元素的后代。

role="treeitem" 的情况下,当 未使用 aria-owns 时,用户 代理 SHOULDAPI 支持反向关系的地方执行以下操作:

  • 如果当前 treeitem 使用 aria-level, 则在树中向后遍历,直到找到具有更低 aria-leveltreeitem,然后将 RELATION_NODE_CHILD_OF 设置为该元素。如果到达树的顶部,则将 RELATION_NODE_CHILD_OF 设置为树元素本身。
  • 如果 treeitem 的父项 具有 角色 group,则从 group 向后遍历,直到找到角色为 treeitem 的元素,然后将 RELATION_NODE_CHILD_OF 设置为该元素。

aria-atomic 的情况下,在 API 支持反向关系的地方:

  • 用户代理 SHOULD 检查祖先元素链中是否存在 aria-atomic="true"。 如果找到,用户代理 SHOULDRELATION_MEMBER_OF 关系设置为指向设置了 aria-atomic="true" 的祖先。

3.6.3 组位置

aria-levelaria-posinsetaria-setsize 都是从 1 开始的。 当属性不存在或 为 "0" 时,表示该 属性未计算或不受支持。如果作者将这些属性中的任何一个指定为 "0" 或负数,用户代理 SHOULD 改用 "1"。

如果具有角色 treeitemcomment 的元素没有提供或继承 aria-level, 则实现 IAccessible2 或 ATK/AT-SPI 的用户代理 MUST 通过 遵循显式或计算出的 RELATION_NODE_CHILD_OF 关系来计算它。

如果未提供 aria-posinsetaria-setsize, 用户代理 MUST 按如下方式计算它们:

  • 对于 role="treeitem"role="comment",向后和向前遍历 树,直到显式或计算出的层级变得小于当前 项的层级。只有当项目与当前项目处于同一层级时才计数。
  • 否则,如果该角色支持 aria-posinsetaria-setsize,则处理 父项(DOM 父项,或由 aria-owns 定义的父项),并对 具有相同角色的项目进行计数。
  • 由于这些值是从 1 开始的,因此在计算中包括当前项目。对于 aria-posinset,包括当前 项目以及在 DOM 中位于当前项目之前的其他组项目。对于 aria-setsize,再加上 DOM 中当前项目之后同一组中的项目数量。

如果作者提供了 aria-setsizearia-posinset 中的一个或多个, 则作者有责任为集合中的所有元素提供它们。用户代理 在这种情况下如何校正缺失值未定义。

MSAA/IAccessible2 API 映射涉及一个附加函数 groupPosition() [IAccessible2],当 aria-levelaria-posinset 和/或 aria-setsize 存在于某个 元素上,或由用户代理计算得出时使用。当发生这种情况时:

  • aria-levelgroupPosition()groupLevel 参数中暴露,
  • aria-setsizesimilarItemsInGroup 参数中暴露,并且
  • aria-posinsetpositionInGroup 参数中暴露。

3.7 动作

作为按角色映射中的定义将角色映射到可访问对象的一部分, 用户代理会在对象上暴露默认动作。

作者需要为这些点击事件创建处理程序,以相应地更新 WAI-ARIA 状态和属性在 DOM 中的值,从而使这些更新后的状态能够由用户代理填充到可访问性 API 中。

3.8 事件

用户代理会为用户动作、WAI-ARIA 状态更改、文档内容或节点可见性更改、 选择更改以及菜单操作触发事件,如下列章节所定义。

3.8.1 状态和属性 更改事件

用户代理 MUST 按下表定义,将状态更改通知给辅助技术;如果可访问性 API为该属性定义了更改事件,则 SHOULD属性更改通知给辅助技术;如果可访问性 API 没有为该属性定义更改事件,则 SHOULD NOT 将 属性更改通知给辅助技术。例如,IAccessible2 定义了一个 在 aria-activedescendant 更改时使用的事件。 预期会更改的 WAI-ARIA 属性包括 aria-activedescendantaria-valuenowaria-valuetext

在某些 API 中,AT 只会收到其已订阅事件的通知。

为了简单性和性能,用户代理 MAY 剔除辅助技术通常会忽略的状态或属性更改事件,例如发生在当前没有焦点的窗口中的事件。

译者:关于以下表格及其切换按钮关联的标签文本,请参见本文档 <head> 节中的 mappingTableLabels 对象。

3.8.1.1 aria-activedescendant
ARIA 规范 aria-activedescendant
MSAA + IAccessible2 事件 焦点更改

此外:

IA2_EVENT_ACTIVE_DESCENDANT_CHANGED

UIA 事件 焦点更改

此外:

PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 焦点更改
AX API 通知 焦点更改

此外:AXSelectedChildrenChanged

Android

待定

3.8.1.2 aria-busy(状态)
ARIA 规范 aria-busy (状态)
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:state-changed:busy
AX API 通知 AXElementBusyChanged
Android

待定

3.8.1.3 aria-checked(状态)
ARIA 规范 aria-checked (状态)
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties,以及作为 toggle 模式一部分的 ToggleState

ATK/AT-SPI 事件 object:state-changed:checked
AX API 通知 AXValueChanged
Android

待定

3.8.1.4 aria-current(状态)
ARIA 规范 aria-current (状态)
MSAA + IAccessible2 事件 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 事件 PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:state-changed:active
AX API 通知 AXCurrentStateChanged
Android

待定

3.8.1.5 aria-disabled(状态)
ARIA 规范 aria-disabled (状态)
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaPropertiesIsEnabled

ATK/AT-SPI 事件 object:state-changed:enabledobject:state-changed:sensitive
AX API 通知 AXDisabledStateChanged
Android

待定

3.8.1.6 aria-describedby
ARIA 规范 aria-describedby
MSAA + IAccessible2 事件 EVENT_OBJECT_DESCRIPTIONCHANGE
UIA 事件 PropertyChangedEvent

属性:DescribedBy

ATK/AT-SPI 事件 object:property-change:accessible-description
AX API 通知 AXDescribedByChanged
Android

待定

3.8.1.7 aria-dropeffect (属性,已弃用)
ARIA 规范 aria-dropeffect (属性,已弃用)
MSAA + IAccessible2 事件 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 事件 PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:property-change
AX API 通知 AXDropEffectChanged
Android

待定

3.8.1.8 aria-expanded(状态)
ARIA 规范 aria-expanded (状态)
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties,以及作为 ExpandCollapse 模式一部分的 ExpandCollapseState

ATK/AT-SPI 事件 object:state-changed:expanded
AX API 通知 AXRowExpanded
AXRowCollapsed
AXRowCountChanged
Android

待定

3.8.1.9 aria-grabbed(状态, 已弃用)
ARIA 规范 aria-grabbed (状态,已弃用)
MSAA + IAccessible2 事件

EVENT_OBJECT_SELECTION

IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED

UIA 事件 PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:property-change
AX API 通知 AXGrabbedStateChanged
Android

待定

3.8.1.10 aria-hidden(状态)
ARIA 规范 aria-hidden (状态)
MSAA + IAccessible2 事件 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 事件 StructureChangedEvent

PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:property-change
AX API 通知 AXUIElementDestroyed
AXUIElementCreated
Android

待定

3.8.1.11 aria-invalid(状态)
ARIA 规范 aria-invalid (状态)
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaPropertiesIsDataValidForForm

ATK/AT-SPI 事件 object:state-changed:invalid_entry
AX API 通知 AXInvalidStatusChanged
Android

待定

3.8.1.12 aria-labelaria-labelledby
ARIA 规范 aria-labelaria-labelledby
MSAA + IAccessible2 事件 EVENT_OBJECT_NAMECHANGE
UIA 事件 PropertyChangedEvent

aria-label 的属性:AriaProperties

aria-labelledby 的属性:LabeledBy

ATK/AT-SPI 事件 object:property-change:accessible-name
AX API 通知 AXLabelCreated
Android

待定

3.8.1.13 aria-pressed(状态)
ARIA 规范 aria-pressed (状态)
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties,以及作为 toggle 模式一部分的 ToggleState

ATK/AT-SPI 事件 object:state-changed:pressed
AX API 通知 AXPressedStateChanged
Android

待定

3.8.1.14 aria-readonly
ARIA 规范 aria-readonly
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:state-changed:readonly
AX API 通知 AXReadOnlyStatusChanged
Android

待定

3.8.1.15 aria-required
ARIA 规范 aria-required
MSAA + IAccessible2 事件 EVENT_OBJECT_STATECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaPropertiesIsRequiredForForm

ATK/AT-SPI 事件 object:state-changed:required
AX API 通知 AXRequiredStatusChanged
Android

待定

3.8.1.16 aria-selected (状态)
ARIA 规范 aria-selected (状态)
MSAA + IAccessible2 事件 详见选择章节。
UIA 事件 详见选择章节。
ATK/AT-SPI 事件 详见选择章节。
AX API 通知 详见选择章节。
Android

待定

3.8.1.17 aria-valuenow
ARIA 规范 aria-valuenow
MSAA + IAccessible2 事件 EVENT_OBJECT_VALUECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties;如果元素映射为带有 RangeValue 控件模式,则还包括 RangeValueValue

ATK/AT-SPI 事件 object:property-change:accessible-value
AX API 通知 AXValueChanged
Android

待定

3.8.1.18 aria-valuetext
ARIA 规范 aria-valuetext
MSAA + IAccessible2 事件 EVENT_OBJECT_VALUECHANGE
UIA 事件 PropertyChangedEvent

属性:AriaProperties

ATK/AT-SPI 事件 object:property-change:accessible-value
AX API 通知 AXValueChanged
Android

待定

3.8.2 文档内容或节点可见性的更改

无论是否存在 WAI-ARIA,处理文档更改都很重要。下表描述的事件由用户代理用于 通过可访问性树向 AT 告知 DOM 的更改。就符合 本标准而言,只要将 WAI-ARIA 属性应用到 Web 页面上的动态内容,用户 代理 MUST 实现本节所述行为。

文档更改场景以及各 API 中要触发的事件表
场景 MSAA + IAccessible2 事件 UIA 事件 ATK/AT-SPI 事件 AX API 通知
当文本被移除时 IA2_EVENT_TEXT_REMOVED EVENT_OBJECT_LIVEREGIONCHANGED text_changed::delete 如果位于实时区域中, AXLiveRegionChanged
如果位于 aria-errormessage 中, AXValidationErrorChanged
当文本被插入时 IA2_EVENT_TEXT_INSERTED EVENT_OBJECT_LIVEREGIONCHANGED text_changed::insert 如果位于实时区域中, AXLiveRegionChanged
如果位于 aria-errormessage 中, AXValidationErrorChanged
当文本被更改时 IA2_EVENT_TEXT_REMOVEIA2_EVENT_TEXT_INSERTED EVENT_OBJECT_LIVEREGIONCHANGED text_changed::deletetext_changed::insert 如果位于实时区域中, AXLiveRegionChanged
如果位于 aria-errormessage 中, AXValidationErrorChanged

对于所涉及的节点是元素且具有可访问对象的节点更改, 触发以下事件。节点的 可访问性子树是它在可访问性 树中的可访问对象及其所有 可访问性 后代。它不包括在该树中通过非父子关系建立关系的对象。例如,除非通过 aria-flowto 链接的对象同时也是 可访问性树中的后代, 否则它不包括这些对象。

文档更改场景以及各 API 中要触发的事件表
场景 MSAA Microsoft UIA 事件 ATK/AT-SPI 事件 AX API 通知
可访问性 子树隐藏 EVENT_OBJECT_HIDE
不使用名为 EVENT_OBJECT_DESTROYMSAA 事件, 因为它存在稳定性问题的历史,辅助 技术会避免使用它。无论如何,从用户角度看,某物被隐藏和被销毁之间没有差别。
AutomationElement..::.StructureChangedEvent children_changed::remove

AXUIElementDestroyed

如果位于实时区域中,AXLiveRegionChanged

当可访问性子树被移除时 EVENT_OBJECT_REORDER
不使用名为 EVENT_OBJECT_DESTROYMSAA 事件, 因为它存在稳定性问题的历史,辅助 技术会避免使用它。无论如何,从用户角度看,某物被隐藏和被销毁之间没有差别。
AutomationElement..::.StructureChangedEvent children_changed::remove

AXUIElementDestroyed

如果位于实时区域中,AXLiveRegionChanged

当可访问性子树显示时 EVENT_OBJECT_SHOW   children_changed::add

AXUIElementCreated

如果位于实时区域中,AXLiveRegionChanged

当可访问性子树被插入时 EVENT_OBJECT_REORDER   children_changed::add

AXUIElementCreated

如果位于实时区域中,AXLiveRegionChanged

当可访问性子树被移动时 将其视为从一个位置移除并插入到另一个位置 将其视为从一个位置移除并插入到另一个位置 将其视为从一个位置移除并插入到另一个位置

AXUIElementDestroyed/ AXUIElementCreated

如果位于实时区域中,AXLiveRegionChanged

当可访问性子树被更改时(例如 replaceNode) 将其视为移除和插入 将其视为移除和插入 将其视为移除和插入

AXUIElementDestroyed/ AXUIElementCreated

如果位于实时区域中,AXLiveRegionChanged

在某些情况下,节点更改可能发生在不是元素或没有可访问对象的节点上。 例如,编号列表项目符号("12.")可能在可访问性树中 有一个节点,但在 DOM 树中没有。对于在 HTML 中标记为 <strong> 的段落内文本,<strong> 元素在 DOM 树中有一个节点,但在可访问性树中可能没有节点。 文本本身当然会位于可访问性树中,并带有该文本范围被格式化为 strong 的标识。 如果上述表格中描述的任何更改发生在这样的节点上,用户代理 SHOULD 按照上文所述计算并触发相关 文本更改事件。

用户代理 SHOULD 确保在进程内运行的辅助技术 能够在节点被移除之前收到节点将被移除的通知。这允许辅助 技术(例如屏幕阅读器)回溯引用正在删除的对应 DOM 节点。这对于移除操作很重要的实时区域尤其重要。 例如,屏幕阅读器会希望通知用户另一个用户 已离开聊天室。在 MSAA 中,该事件将是 EVENT_OBJECT_HIDE。 对于 ATK/AT-SPI, 它将是 children_changed::remove。在 macOS 中,该事件是 AXLiveRegionChanged。这还要求用户代理在 可访问性 API 通知中提供唯一 ID,以标识正在被移除的唯一 节点。

在触发上述任何更改事件时,提供有关该更改是否由用户输入导致的信息非常有用(而不是由 页面加载后启动的超时等导致)。这允许辅助技术针对来自真实世界的更改和来自用户动作的更改采用不同的呈现规则。 鼠标悬停不被视为 显式用户输入,因为它可能由无意碰到鼠标而发生。

要暴露某个更改是否来自用户输入:

  • ATK/AT-SPI 中,如果该更改不是由用户导致的, 可以通过向事件名称追加字符串 ":system" 来提供。
  • 在 IAccessible2 中,屏幕阅读器通常在同一线程的进程内访问它,最佳 做法是在事件的可访问对象上暴露对象属性 event-from-user-input:true, 如果该更改由用户导致。

暴露有关更改上下文的其他有用信息:

  • ATK/AT-SPI 和 IAccessible2 中, 可访问事件的目标可访问对象上的 RELATION_MEMBER_OF 关系 SHOULD 指向任何带有 aria-atomic="true" 的祖先(如果有)。
  • ATK/AT-SPI 和 IAccessible2 中, container-livecontainer-relevantcontainer-busycontainer-atomic 对象属性 SHOULD 暴露在可访问事件对象上, 为相关 WAI-ARIA 属性提供计算值。计算值是最近祖先的值。建议在使用默认值时不暴露该对象属性。

可能还需要其他 MSAA 事件:

  • 如果具有映射的 MSAA 角色 ROLE_SYSTEM_ALERT 的祖先中发生某些更改, 则 SHOULD 为该警报触发 EVENT_SYSTEM_ALERT 事件。 alert 角色对 aria-live 属性具有隐含值 "assertive"。
  • 可能需要触发菜单事件。见菜单的特殊事件

3.8.3 焦点更改

下表定义了可访问性 API 键盘焦点状态和事件。

焦点状态和 事件可访问性 API
  MSAA Microsoft UIA ATK/AT-SPI AX API
可聚焦状态 STATE_SYSTEM_FOCUSABLE 当前状态反映在 IUIAutomationElement::CurrentIsKeyboardFocusable 中,可使用 UIA_IsKeyboardFocusablePropertyId 属性标识符通过 IUIAutomationElement::GetCurrentPropertyValue 方法检索。 STATE_FOCUSABLE boolean AXFocusedAXUIElementIsAttributeSettable 方法 返回 YES
已聚焦状态 STATE_SYSTEM_FOCUSED 当前状态反映在 IUIAutomationElement::CurrentHasKeyboardFocus 中, 可使用 UIA_HasKeyboardFocusPropertyId 属性标识符通过 IUIAutomationElement::GetCurrentPropertyValue 方法检索。 STATE_FOCUSED boolean AXFocused
焦点事件 EVENT_OBJECT_FOCUS 客户端可以使用 IUIAutomation::AddFocusChangedEventHandler 订阅,其 回调接口是 IUIAutomationFocusChangedEventHandler object:state-changed:focused,以及: AXFocusedUIElementChanged

3.8.4 选择

选择有两种情况:

  • 单选
  • 多选

在单选情况下,选择跟随焦点(关于焦点 事件的信息,请参见“焦点状态和事件表”章节)。用户 代理 MUSTaria-selected 更改时触发以下事件:

单选事件
场景 MSAA Microsoft UIA ATK/AT-SPI AX API
焦点更改 在新聚焦的项目上触发 EVENT_OBJECT_SELECTIONEVENT_OBJECT_STATECHANGE 在新聚焦的元素上触发 UIA_SelectionItem_ElementSelectedEventId

如果位于 gridcellrowoptiontab 上,则触发 UIA_SelectionItem_ElementSelectedEventId

  • 在当前容器上触发 object:selection-changed
  • 在选择发生更改的后代可访问 对象上触发 object:state-changed:selected
    • 对于刚刚变为选中的后代,detail1 = 1
    • 对于刚刚变为未选中的后代,detail1 = 0
AXSelectedChildrenChanged

多选情况发生在支持该属性角色元素上设置了 aria-multiselectable="true" 时。用户代理 MUST 在后代上的 aria-selected 如下更改时触发以下事件:

多选情况发生在支持该属性角色元素上设置了 aria-multiselectable="true" 时。有几个重要方面:

  1. 在 Microsoft UIA 中,SelectionSelectionItem 控件模式暴露选择可用性、状态和 方法。
  2. 用户代理 MUST 在后代上的 aria-selected 如下更改时触发以下事件:
多选事件
场景 MSAA Microsoft UIA ATK/AT-SPI AX API
切换 aria-selected 在该项目上触发 EVENT_OBJECT_SELECTIONADD/EVENT_OBJECT_SELECTIONREMOVE SelectionItem Control Pattern:在该 项目上触发 UIA_SelectionItem_ElementAddedToSelectionEventIdUIA_SelectionItem_ElementRemovedFromSelectionEventId
  • 在当前容器上触发 object:selection-changed
  • 在选择发生更改的任何后代可访问 对象上触发 object:state-changed:selected
    • 对于任何刚刚变为选中的后代,detail1 = 1
    • 对于任何刚刚变为未选中的后代,detail1 = 0
AXSelectedChildrenChanged
选择跟随焦点 在新聚焦的项目上触发 EVENT_OBJECT_SELECTIONEVENT_OBJECT_STATECHANGE FocusChangedEvent 应被触发,但单独的选择事件可能不会 发生,以避免冗余。
  • 在当前容器上触发 object:selection-changed
  • 在选择发生更改的任何后代可访问 对象上触发 object:state-changed:selected
AXSelectedChildrenChanged
一次选择或取消选择多个项目 用户代理 MAY 触发 EVENT_OBJECT_SELECTIONWITHIN。如果触发此事件,则为了性能,上述其他事件 MAY 被剔除。 对于每个被选中或取消选中的元素,在当前 容器上触发 SelectionItem 控件 模式:UIA_SelectionItem_ElementAddedToSelectionEventIdUIA_SelectionItem_ElementRemovedFromSelectionEventId。用户代理 MAY 选择触发 Selection 控件 模式 Invalidated 事件,它 表示容器中的选择发生了重大变化,需要 发送的添加和移除事件数量超过 InvalidateLimit 常量 允许的数量。
  • 为了性能,用户代理 MAY 在容器上触发单个 object:selection-changed 事件,而不是多个 事件,
  • 在选择发生更改的任何后代可访问 对象上触发 object:state-changed:selected
AXSelectedChildrenChanged

3.8.5 菜单的特殊事件

某些 API 会在菜单打开或 关闭时提供特殊事件用户代理 SHOULD 按下表所述提供这些 事件。如果提供这些事件,由于菜单可以通过多种技术变为可见或隐藏用户 代理 MUST 确保这些事件 是嵌套且对称的。

通常,menubar 用于组织 菜单层次结构。在这些情况下,menubar MUST 是关联 menuitemDOM 父项,或者是由 aria-owns 定义的父项。在其他情况下,不涉及 menubar;例如,当 menu 与工具栏按钮关联,或是上下文菜单时。 尽管如此,仍会按下表所述提供相关菜单事件。

菜单事件
场景 MSAA Microsoft UIA AX API

Menubar 当前未激活,用户从其他位置将焦点移动到 menubar, 从而激活它。因此,menubar 中的一个 menuitem 获得焦点。

激活 menubar,并在 menubar 的可访问 对象上触发 EVENT_SYSTEM_MENUSTART 在 menu 的可访问对象上触发 MenuModeStartEvent AXMenuOpenedNotification

在 menubar 被激活时聚焦 menuitem,或聚焦 menu 中的 menuitem。

EVENT_OBJECT_FOCUS AutomationFocusChangedEvent AXMenuItemSelectedNotification

菜单弹出项变为可见(菜单被打开)。

在菜单关闭并再次打开之前,应只触发一次。

EVENT_SYSTEM_MENUPOPUPSTART MenuOpenedEvent,然后在 menuitem 上触发 focus 事件。 AXMenuOpenedNotification
菜单弹出项被隐藏(菜单被关闭)。 仅在可访问 menu 对象上触发一次 EVENT_SYSTEM_MENUPOPUPEND,且仅当已为其触发过 EVENT_SYSTEM_MENUPOPUPSTART 时。 MenuClosedEvent AXMenuClosedNotification
所有打开的菜单(包括子菜单)都被关闭,且用户将焦点从 menubar 移走;menubar 被停用。 在 menubar 上触发 EVENT_SYSTEM_MENUEND,并停用 menubar。 MenuClosedEvent,然后触发 MenuModeEndEvent AXMenuClosedNotification

4. 算法

某些 API 提供了需要遵循特定 算法的方法。以下章节提供这些方法的算法映射表。

4.1 ARIANotifyMixin 算法映射表

ARIANotifyMixin 提供了一种向辅助技术通告内容的方法。以下 算法映射指定这些通告如何在不同的可访问性 API 中实现,以确保辅助技术用户获得一致的行为。

4.1.1 ariaNotify

给定 nodeannouncementpriority,要执行 aria notify

ARIA 规范 aria notify
前置条件

如果 node排除在 可访问性树之外,则中止这些步骤。

语言

用户代理和辅助技术 MUST 通过从以下来源获取第一个有效的 BCP 47 语言标记来确定通告的语言:

  1. node 的最近祖先元素的 lang 属性 (包括 node 本身)。
  2. 文档元素的 lang 属性(包括在 document 上调用时)。
  3. 用户代理或平台默认值。

辅助技术 MUST 使用该语言呈现 通告(例如语音、发音规则、盲文表)。

MSAA + IAccessible2

未指定实现(见回退 注释)。

UIA
  1. 如果 priority 为 "high",则令 mapped_priorityNotificationProcessing_ImportantAll,否则为 NotificationProcessing_All

  2. 使用 nodeNotificationKind_ActionCompletedmapped_priorityannouncement 和空 字符串调用 UiaRaiseNotificationEvent

如果平台可访问性实现确定 node 未在 UIA Control viewContent view 中表示,则用户代理 SHOULD 改为在 被表示为 UIA Control 的最近祖先上触发 通知事件。如果不存在这样的祖先,则用户代理 SHOULD 在文档根上触发该事件(预期它会在这些视图之一中),以 确保忽略不在 Control 或 Content view 中的元素上的事件的辅助技术能够收到该通知。

ATK
  1. 如果 priority 为 "high",则令 mapped_priorityAtk.Live.ATK_LIVE_ASSERTIVE,否则为 Atk.Live.ATK_LIVE_POLITE

  2. 使用 node"notification"announcementmapped_priority 调用 g_signal_emit_by_name

ATK 2.50.0 之前的较旧 Linux 可访问性栈上,用户代理 MAY 使用回退;见回退注释

AT-SPI
  1. 如果 priority 为 "high",则令 mapped_priorityATSPI_LIVE_ASSERTIVE,否则为 ATSPI_LIVE_POLITE

  2. 使用 node"announcement"announcementmapped_priority 发送 DBUS 信号 ATSPI_DBUS_INTERFACE_EVENT_OBJECT

AX API
  1. 如果 priority 为 "high",则令 mapped_priorityNSAccessibilityPriorityHigh,否则为 NSAccessibilityPriorityMedium

  2. userInfo 为带有以下 键的 NSDictionary

    1. NSAccessibilityAnnouncementKey 作为 announcement
    2. NSAccessibilityPriorityKey 作为 mapped_priority
  3. 使用 nodeNSAccessibilityAnnouncementRequestedNotificationuserInfo 调用 NSAccessibilityPostNotificationWithUserInfo

当没有合适的平台通知 API 可用时(例如,缺少较新 notification signal 的 ATK 2.50.0 之前的较旧 Linux 可访问性栈,或在 Windows 上用户 代理无法使用 UIA 时),用户代理 MAY 在其可访问性树中合成一个临时的、仅面向辅助技术的实时区域, 以传达 aria notify 通告。这类 回退节点不会暴露给 Web 内容,也不能被 Web 内容检测到,并且此行为不是 必需的。

5. 隐私考虑

根据 Web 平台 设计原则,本规范不提供任何可通过编程方式 确定信息是否正被辅助技术使用的接口。然而,本规范确实允许作者向辅助技术用户呈现 与不使用辅助技术的用户可获得的信息不同的信息。与使用 Web 技术栈的许多其他部分一样, 这可以通过 ARIA 和 CORE-AAM 规范的许多特性实现。这种内容差异可能被滥用来对 辅助技术用户执行 主动指纹识别

6. 安全考虑

本规范未引入新的安全考虑。

A. 变更日志

A.1 自上一个候选推荐 快照以来的实质性变更

A.2 Core Accessibility API Mappings 1.1 推荐标准以来的实质性变更

B. 致谢

本节是非规范性的。

以下人员为本文档的开发做出了贡献。

B.1 发布时的 ARIA WG 参与者

B.2 促成资助者

本出版物部分由美国教育部、国家残障、独立生活与康复研究所 (NIDILRR)的美国联邦资金资助,最初合同编号为 ED-OSE-10-C-0067,随后合同编号为 HHSP23301500054C,现在合同编号为 HHS75P00120P00168。本出版物的内容不一定反映美国教育部的观点或政策, 提及商品名、商业产品或组织也不意味着美国政府认可。

C. 参考文献

C.1 规范性参考文献

[HTML-AAM]
HTML Accessibility API Mappings 1.0. Scott O'Hara; Rahim Abdi. W3C. 24 April 2026. W3C Working Draft. URL: https://www.w3.org/TR/html-aam-1.0/
[IAccessible2]
IAccessible2. Linux Foundation. URL: https://wiki.linuxfoundation.org/accessibility/iaccessible2/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[wai-aria]
Accessible Rich Internet Applications (WAI-ARIA) 1.0. James Craig; Michael Cooper et al. W3C. 20 March 2014. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria/
[WAI-ARIA-1.2]
Accessible Rich Internet Applications (WAI-ARIA) 1.2. Joanmarie Diggs; James Nurthen; Michael Cooper; Carolyn MacLeod. W3C. 6 June 2023. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria-1.2/

C.2 资料性参考文献

[accname-1.2]
Accessible Name and Description Computation 1.2. Bryan Garaventa; Melanie Sumner. W3C. 24 April 2026. W3C Working Draft. URL: https://www.w3.org/TR/accname-1.2/
[Android-Accessibility-API]
Android Accessibility API. Google. URL: https://developer.android.com/guide/topics/ui/accessibility
[AT-SPI]
Assistive Technology Service Provider Interface. The GNOME Project. URL: https://gnome.pages.gitlab.gnome.org/at-spi2-core/libatspi/
[ATK]
ATK - Accessibility Toolkit. The GNOME Project. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
The NSAccessibility Protocol for macOS. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[CORE-AAM-1.1]
Core Accessibility API Mappings 1.1. Joanmarie Diggs; Joseph Scheuhammer; Richard Schwerdtfeger; Michael Cooper; Andi Snow-Weaver; Aaron Leventhal. W3C. 14 December 2017. W3C Recommendation. URL: https://www.w3.org/TR/core-aam-1.1/
[dom]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[UI-AUTOMATION]
UI Automation. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/ui-automation-specification
[UIA-EXPRESS]
The IAccessibleEx Interface. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/iaccessibleex
[WAI-ARIA-ROADMAP]
Roadmap for Accessible Rich Internet Applications (WAI-ARIA Roadmap). Richard Schwerdtfeger. W3C. 4 February 2008. W3C Working Draft. URL: https://www.w3.org/TR/wai-aria-roadmap/