核心可访问性 API 映射 1.2
W3C 候选推荐草案 2026 年 4 月 30 日
关于本文档的更多详细信息
此版本:
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. )
Cynthia Shelly (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
(拉取
请求 ,
新议题 ,
开放议题 )
Copyright
©
2014-2026
World Wide Web Consortium .
W3C ®
liability ,
trademark and
permissive document license rules apply.
目录
摘要
本文档的状态
1. 介绍
1.1 可访问性
API
1.2
比较可访问性 API
1.2.1
ATK /AT -SPI
1.2.2
UIA (UI Automation)
1.2.3 Android 可访问性 API
1.2.4 可访问名称和描述
2. 一致性
2.1 WAI-ARIA 中已弃用的特性
3. 将 WAI-ARIA 映射到可访问性 API
3.1 暴露 WAI-ARIA
语义的一般规则
3.2
原生标记语义与 WAI-ARIA 之间的冲突
3.3
暴露不直接映射到可访问性 API 属性的属性
3.4 角色
映射
3.4.1 一般规则
3.4.2 计算角色
3.4.3
角色映射表
3.4.3.1 alert
3.4.3.2 alertdialog
3.4.3.3 application
3.4.3.4 article
3.4.3.5 banner
3.4.3.6 blockquote
3.4.3.7 button,其
aria-pressed 和 aria-haspopup 为默认值
3.4.3.8 button,其
aria-haspopup 为非 false 值
3.4.3.9 button,其
aria-pressed 有定义值
3.4.3.10 caption
3.4.3.11 cell
3.4.3.12 checkbox
3.4.3.13 code
3.4.3.14 columnheader
3.4.3.15 combobox
3.4.3.16 comment
3.4.3.17 complementary
3.4.3.18 contentinfo
3.4.3.19 definition
3.4.3.20 deletion
3.4.3.21 dialog
3.4.3.22 directory(已弃用)
3.4.3.23 document
3.4.3.24 emphasis
3.4.3.25 feed
3.4.3.26 figure
3.4.3.27 具有可访问名称的 form
3.4.3.28 没有可访问名称的 form
3.4.3.29 generic
3.4.3.30 grid
3.4.3.31 gridcell
3.4.3.32 group
3.4.3.33 heading
3.4.3.34 image
3.4.3.35 img
3.4.3.36 insertion
3.4.3.37 link
3.4.3.38 list
3.4.3.39 没有 combobox 可访问性父项的
listbox
3.4.3.40 具有 combobox 可访问性
父项的 listbox
3.4.3.41 listitem
3.4.3.42 log
3.4.3.43 main
3.4.3.44 mark
3.4.3.45 marquee
3.4.3.46 math
3.4.3.47 menu
3.4.3.48 menubar
3.4.3.49 menuitem
3.4.3.50 menuitemcheckbox
3.4.3.51 menuitemradio
3.4.3.52 meter
3.4.3.53 navigation
3.4.3.54 none
3.4.3.55 note
3.4.3.56 不在
combobox 内部的 option
3.4.3.57 在
combobox 内部的 option
3.4.3.58 paragraph
3.4.3.59 presentation
3.4.3.60 progressbar
3.4.3.61 radio
3.4.3.62 radiogroup
3.4.3.63 具有可访问
名称的 region
3.4.3.64 没有可访问
名称的 region
3.4.3.65 不在
treegrid 内部的 row
3.4.3.66 在
treegrid 内部的 row
3.4.3.67 rowgroup
3.4.3.68 rowheader
3.4.3.69 scrollbar
3.4.3.70 search
3.4.3.71 searchbox
3.4.3.72 sectionfooter
3.4.3.73 sectionheader
3.4.3.74 separator(不可聚焦)
3.4.3.75 separator(可聚焦)
3.4.3.76 slider
3.4.3.77 spinbutton
3.4.3.78 status
3.4.3.79 strong
3.4.3.80 subscript
3.4.3.81 suggestion
3.4.3.82 superscript
3.4.3.83 switch
3.4.3.84 tab
3.4.3.85 table
3.4.3.86 tablist
3.4.3.87 tabpanel
3.4.3.88 term
3.4.3.89 textbox,当
aria-multiline 为 false 时
3.4.3.90 textbox,当
aria-multiline 为 true 时
3.4.3.91 time
3.4.3.92 timer
3.4.3.93 toolbar
3.4.3.94 tooltip
3.4.3.95 tree
3.4.3.96 treegrid
3.4.3.97 treeitem
3.5
状态和属性映射
3.5.1 一般规则
3.5.2 状态和属性映射表
3.5.2.1
未映射
3.5.2.2 aria-activedescendant
3.5.2.3
aria-atomic=true
3.5.2.4
aria-atomic=false
3.5.2.5
aria-autocomplete=inline、list
或 both
3.5.2.6
aria-autocomplete=none
3.5.2.7 aria-braillelabel
3.5.2.8 aria-brailleroledescription
3.5.2.9
aria-brailleroledescription 未定义或为空
字符串
3.5.2.10
aria-busy=true
3.5.2.11
aria-busy=false
3.5.2.12
aria-checked=true
3.5.2.13
aria-checked=false
3.5.2.14
aria-checked=mixed
3.5.2.15 aria-checked 未定义
3.5.2.16 aria-colcount
3.5.2.17 aria-colindex
3.5.2.18 aria-colindextext
3.5.2.19 aria-colspan
3.5.2.20 aria-controls
3.5.2.21 aria-current 为
非 false 允许值
3.5.2.22 aria-current 为无法识别的
值
3.5.2.23 aria-current 为
false 或未定义
3.5.2.24 aria-describedby
3.5.2.25 aria-description
3.5.2.26 aria-details
3.5.2.27
aria-disabled=true
3.5.2.28
aria-disabled=false
3.5.2.29
aria-dropeffect=copy、move、
link、execute 或 popup(已弃用)
3.5.2.30
aria-dropeffect=none(已弃用)
3.5.2.31 aria-errormessage
3.5.2.32
aria-expanded=true
3.5.2.33
aria-expanded=false
3.5.2.34 aria-expanded 未定义
3.5.2.35 aria-flowto
3.5.2.36
aria-grabbed=true
3.5.2.37
aria-grabbed=false
3.5.2.38 aria-grabbed 未定义
3.5.2.39
aria-haspopup=true
3.5.2.40
aria-haspopup=false
3.5.2.41
aria-haspopup=dialog
3.5.2.42
aria-haspopup=grid
3.5.2.43
aria-haspopup=listbox
3.5.2.44
aria-haspopup=menu
3.5.2.45
aria-haspopup=tree
3.5.2.46 未聚焦元素上的
aria-hidden=true
3.5.2.47 当元素被聚焦或触发可访问性事件时的
aria-hidden=true
3.5.2.48
aria-hidden=false
3.5.2.49
aria-invalid=true
3.5.2.50
aria-invalid=false
3.5.2.51
aria-invalid=spelling 或
grammar
3.5.2.52 aria-invalid 为无法识别的
值
3.5.2.53 aria-keyshortcuts
3.5.2.54
aria-label
3.5.2.55 aria-labelledby
3.5.2.56
非 heading 上的 aria-level
3.5.2.57 heading 上的
aria-level
3.5.2.58
aria-live=assertive
3.5.2.59
aria-live=polite
3.5.2.60 aria-live=off
3.5.2.61
aria-modal=true
3.5.2.62
aria-modal=false
3.5.2.63
aria-multiline=true
3.5.2.64
aria-multiline=false
3.5.2.65
aria-multiselectable=true
3.5.2.66
aria-multiselectable=false
3.5.2.67
aria-orientation=horizontal
3.5.2.68
aria-orientation=vertical
3.5.2.69 aria-orientation 未
定义
3.5.2.70
aria-owns
3.5.2.71 aria-placeholder
3.5.2.72 aria-posinset
3.5.2.73
aria-pressed=true
3.5.2.74
aria-pressed=mixed
3.5.2.75
aria-pressed=false
3.5.2.76 aria-pressed 未定义
3.5.2.77
aria-readonly=true
3.5.2.78
aria-readonly=false
3.5.2.79
gridcell 上未指定 aria-readonly
3.5.2.80 aria-relevant
3.5.2.81
aria-required=true
3.5.2.82
aria-required=false
3.5.2.83 aria-roledescription
3.5.2.84 aria-roledescription 未
定义或为空字符串
3.5.2.85 aria-rowcount
3.5.2.86 aria-rowindex
3.5.2.87 aria-rowindextext
3.5.2.88 aria-rowspan
3.5.2.89
aria-selected=true
3.5.2.90
aria-selected=false
3.5.2.91 aria-selected 未定义
3.5.2.92 aria-setsize
3.5.2.93
aria-sort=ascending
3.5.2.94
aria-sort=descending
3.5.2.95
aria-sort=other
3.5.2.96
aria-sort=none
3.5.2.97 aria-valuemax
3.5.2.98 aria-valuemin
3.5.2.99 aria-valuenow
3.5.2.100 aria-valuetext
3.6
需要额外计算的特殊处理
3.6.1 名称和描述
3.6.2 关系
3.6.2.1 反向关系
3.6.2.2
隐含的反向关系
3.6.3 组位置
3.7
动作
3.8
事件
3.8.1 状态和属性更改事件
3.8.1.1 aria-activedescendant
3.8.1.2 aria-busy(状态)
3.8.1.3 aria-checked(状态)
3.8.1.4 aria-current(状态)
3.8.1.5 aria-disabled(状态)
3.8.1.6 aria-describedby
3.8.1.7 aria-dropeffect(属性,
已弃用)
3.8.1.8 aria-expanded(状态)
3.8.1.9 aria-grabbed(状态,
已弃用)
3.8.1.10 aria-hidden(状态)
3.8.1.11 aria-invalid(状态)
3.8.1.12 aria-label 和
aria-labelledby
3.8.1.13 aria-pressed(状态)
3.8.1.14 aria-readonly
3.8.1.15 aria-required
3.8.1.16 aria-selected(状态)
3.8.1.17 aria-valuenow
3.8.1.18 aria-valuetext
3.8.2 文档内容或节点可见性的更改
3.8.3 焦点更改
3.8.4 选择
3.8.5
菜单的特殊事件
4. 算法
4.1 ARIANotifyMixin 算法映射表
4.1.1 ariaNotify
5. 隐私
考量
6. 安全
考量
A. 变更日志
A.1 自上一个 候选推荐快照 以来的实质性更改
A.2 自 Core
Accessibility API Mappings 1.1
推荐标准 以来的实质性更改
B.
致谢
B.1 发布时的 ARIA WG
参与者
B.2 支持
资助者
C. 参考文献
C.1
规范性参考文献
C.2
资料性参考文献
在平台可访问性 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 的状态 和属性 填充这些对象。
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 中没有
对应角色时,用户代理 MAY 除 WAI-ARIA
角色外,还暴露原生语义。如果宿主语言元素被一个
WAI-ARIA 角色覆盖,而该角色的语义或结构
不等同于原生宿主语言语义,也不等同于这些
语义的子类,则将任何具有“允许的可访问性子角色”中指定角色的子元素视为具有
presentation 或
none 。
注
上述文本与 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 角色的语义值。
平台可访问性 API 可能具有
WAI-ARIA 中没有的特性。同样,
WAI-ARIA 暴露了在发布时尚不被可访问性
API 支持的能力。通常,并非所有
WAI-ARIA 属性 与
平台可访问性 API 之间都存在一对一关系。
当 WAI-ARIA 角色 、状态 和属性 不直接映射
到某个
可访问性 API ,并且该 API 中存在用于暴露
WAI-ARIA 角色、状态和属性及其
值的机制时,用户代理
MUST 按如下方式使用该机制暴露
WAI-ARIA 数据:
在 IAccessible2 和 ATK /AT-SPI 中,使用对象属性
来暴露
语义 ,这些语义并不直接
受 API 支持。对象属性是
名称-值对,
其规定较为宽泛,并且在可访问性 API 中没有特定接口的情况下,
非常灵活地用于暴露相关内容。例如,
目前,aria-live
属性可以通过对象属性暴露,因为可访问性
API 没有可用的此类属性。
关于暴露对象属性名称-值对的具体规则贯穿本文档进行描述,
而一般情况的规则见状态和
属性映射 。
在 Microsoft UIA 中,使用 AriaRole 和
AriaProperties 属性来暴露控制类型中不直接
支持的语义。
注
MSAA 没有提供用于暴露
不直接映射到 API 的属性的机制,并且在实现者之间也没有
关于如何实现这一点的共识。
用户代理还 MUST 通过此机制暴露完整的角色字符串,并且
MAY 也通过此机制暴露 WAI-ARIA 属性和值,
即使这些属性和值已经直接映射到可访问性 API 。
建议浏览器实现者公开记录其用于暴露任何相关信息的 API 方法,
以便
辅助技术 开发者可以
使用该 API 来支持用户特性。
平台可访问性 API 传统上具有一组有限的预定义
角色 ,这些角色是该平台上的
辅助技术 所预期的,
并且可能只暴露一个或两个角色。相比之下,
WAI-ARIA 允许将多个角色指定
为由空格分隔的有效角色令牌的有序集合。附加角色是
后备角色,类似于在首选字体类型不受支持时指定多个字体的概念。
如果 API 支持相应机制,用户代理 MUST 暴露 WAI-ARIA 角色字符串。这允许辅助技术对
角色执行自己的额外处理。
MSAA :
不支持 。用户代理 SHOULD
NOT 在
MSAA 的 accRole 属性中暴露自定义角色。
IAccessible2:作为对象属性对(xml-roles:"string")暴露
UIA :作为 AriaRole 属性暴露。
AriaRole property 还可以支持使用空格作为
分隔符的次要角色。
ATK /AT-SPI :作为对象
属性对暴露
(xml-roles:"string")
元素的 computedrole 是一个字符串,表示由浏览器引擎计算出的该元素的角色。
computedrole 主要用于开发者
工具以及规范一致性和互操作性测试。
注
当元素具有角色但未包含在所需上下文中时(例如,
没有所需的 list 角色可访问性父项的孤立
listitem),这是创作
错误,但用户代理行为并未被指定为单一规则。对于大多数角色,用户
代理可以通过忽略该角色来恢复错误,或在实现认为无害的场景中尊重作者预期的角色。
请注意,引擎如何处理作者角色错误方面的这种宽容性
可能会被特定语言的映射文档(例如 [HTML-AAM ])覆盖。
当宿主语言元素没有到某个有效的、非抽象角色的精确或等效映射时,
相关的 Accessibility API Mapping
扩展规范 MAY 指定一个唯一的
computedrole 字符串作为互操作性测试用途的返回值,例如
[HTML-AAM ] 中的
<video> -> "html-video"。
然而,作者 MUST NOT 在 role 属性中使用任何
带宿主语言前缀的 computedrole 字符串(例如
html-video),除非该令牌也匹配一个有效的、已定义的角色(例如
dpub-chapter)。用户代理 MUST
忽略任何抽象或无效的角色令牌。
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
待定
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
待定
ARIA 规范
application
计算角色
application
MSAA + IAccessible2
角色:ROLE_SYSTEM_APPLICATION
UIA
控件类型:Pane
本地化控件类型:application
ATK /AT-SPI
角色:ROLE_EMBEDDED
AX API [注
1 ]
AXRole:AXGroup
AXSubrole:AXWebApplication
Android
待定
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
待定
ARIA 规范
banner
计算角色
banner
MSAA + IAccessible2
角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:banner
UIA
控件类型:Group
本地化控件类型:banner
Landmark Type:Custom
Localized Landmark Type:banner
ATK /AT-SPI
角色:ROLE_LANDMARK
对象属性:xml-roles:banner
AX API [注
1 ]
AXRole:AXGroup
AXSubrole:AXLandmarkBanner
Android
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
ARIA 规范
dialog
计算角色
dialog
MSAA + IAccessible2
角色:ROLE_SYSTEM_DIALOG
UIA
控件类型:Pane
ATK /AT-SPI
角色:ROLE_DIALOG
接口:Window
AX API [注
1 ]
AXRole:AXGroup
AXSubrole:AXApplicationDialog
Android
待定
ARIA 规范
directory
计算角色
list
MSAA + IAccessible2
角色:ROLE_SYSTEM_LIST
UIA
控件类型:List
ATK /AT-SPI
角色:ROLE_LIST
AX API [注
1 ]
AXRole:AXList
AXSubrole:AXContentList
Android
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
ARIA 规范
group
计算角色
group
MSAA + IAccessible2
角色:ROLE_SYSTEM_GROUPING
UIA
控件类型:Group
ATK /AT-SPI
角色:ROLE_PANEL
AX API [注
1 ]
AXRole:AXGroup
AXSubrole:AXApplicationGroup
Android
待定
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
待定
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
待定
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
待定
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
待定
ARIA 规范
link
计算角色
link
MSAA + IAccessible2
角色:ROLE_SYSTEM_LINK
状态:STATE_SYSTEM_LINKED
状态:其后代上的 STATE_SYSTEM_LINKED
接口:IAccessibleHypertext
UIA
控件类型:HyperLink
控件模式:Value
ATK /AT-SPI
角色:ROLE_LINK
接口:HyperlinkImpl
AX API [注
1 ]
AXRole:AXLink
AXSubrole:<nil>
Android
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
ARIA 规范
math
计算角色
math
MSAA + IAccessible2
角色:ROLE_SYSTEM_EQUATION
UIA
控件类型:Group
本地化控件类型:math
ATK /AT-SPI
角色:ROLE_MATH
AX API [注
1 ]
AXRole:AXGroup
AXSubrole:AXDocumentMath
Android
待定
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
待定
ARIA 规范
navigation
计算角色
navigation
MSAA + IAccessible2
角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:navigation
UIA
控件类型:Group
本地化控件类型:navigation
Landmark Type:Navigation
ATK /AT-SPI
角色:ROLE_LANDMARK
对象属性:xml-roles:navigation
AX API [注 1 ]
AXRole:AXGroup
AXSubrole:AXLandmarkNavigation
Android
待定
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
待定
ARIA 规范
note
计算角色
note
MSAA + IAccessible2
角色:IA2_ROLE_NOTE
UIA
控件类型:Group
本地化控件类型:note
ATK /AT-SPI
角色:ROLE_COMMENT
AX API [注 1 ]
AXRole:AXGroup
AXSubrole:AXDocumentNote
Android
待定
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
待定
ARIA 规范
option
在 combobox 内部
计算角色
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
待定
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
待定
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
待定
ARIA 规范
progressbar
计算角色
progressbar
MSAA + IAccessible2
角色:ROLE_SYSTEM_PROGRESSBAR
状态:STATE_SYSTEM_READONLY
接口:IAccessibleValue
UIA
控件类型:ProgressBar
控件模式:如果存在
aria-valuenow、aria-valuemax 或
aria-valuemin,则为 RangeValue
ATK /AT-SPI
角色:ROLE_PROGRESS_BAR
接口:Value
由于 WAI-ARIA 不支持通过可访问性 API 修改值,用户代理 MUST
对所有提供修改值方式的 Value 方法返回
false。
AX API [注 1 ]
AXRole:AXProgressIndicator
AXSubrole:<nil>
Android
待定
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
待定
ARIA 规范
radiogroup
计算角色
radiogroup
MSAA + IAccessible2
角色:ROLE_SYSTEM_GROUPING
UIA
控件类型:List
ATK /AT-SPI
角色:ROLE_PANEL
AX API [注 1 ]
AXRole:AXRadioGroup
AXSubrole:<nil>
Android
待定
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
待定
ARIA 规范
region
没有可访问名称
计算角色
使用原生宿主语言角色。
MSAA + IAccessible2
不要将该元素 暴露为
地标。请改用该元素的原生宿主语言角色。
UIA
不要将该元素 暴露为
地标。请改用该元素的原生宿主语言角色。
ATK /AT-SPI
不要将该元素 暴露为
地标。请改用该元素的原生宿主语言角色。
AX API [注 1 ]
不要将该元素 暴露为
地标。请改用该元素的原生宿主语言角色。
Android
待定
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
待定
ARIA 规范
row
在 treegrid 内部
计算角色
row
MSAA + IAccessible2
角色:ROLE_SYSTEM_OUTLINEITEM
UIA
控件类型:DataItem
本地化控件类型:row
控件模式:SelectionItem
ATK /AT-SPI
角色:ROLE_TABLE_ROW
AX API [注 1 ]
AXRole:AXRow
AXSubrole:<nil>
Android
待定
ARIA 规范
rowgroup
计算角色
rowgroup
MSAA + IAccessible2
角色:ROLE_SYSTEM_GROUPING
UIA
控件类型:Group
ATK /AT-SPI
角色:ROLE_PANEL
AX API [注 1 ]
未映射
Android
待定
ARIA 规范
search
计算角色
search
MSAA + IAccessible2
角色:IA2_ROLE_LANDMARK
对象属性:xml-roles:search
UIA
控件类型:Group
本地化控件类型:search
Landmark Type:Search
ATK /AT-SPI
角色:ROLE_LANDMARK
对象属性:xml-roles:search
AX API [注 1 ]
AXRole:AXGroup
AXSubrole:AXLandmarkSearch
Android
待定
ARIA 规范
searchbox
计算角色
searchbox
MSAA + IAccessible2
角色:ROLE_SYSTEM_TEXT
对象属性:text-input-type:search
UIA
控件类型:Edit
本地化控件类型:search box
ATK /AT-SPI
角色:ROLE_ENTRY
对象属性:xml-roles:searchbox
对象属性:text-input-type:search
接口:如果 aria-readonly 不是
"true",则为 EditableText
AX API [注 1 ]
AXRole:AXTextField
AXSubrole:AXSearchField
Android
待定
ARIA 规范
separator
(不可聚焦)
计算角色
seperator
MSAA + IAccessible2
角色:ROLE_SYSTEM_SEPARATOR
UIA
控件类型:Separator
ATK /AT-SPI
角色:ROLE_SEPARATOR
AX API [注 1 ]
AXRole:AXSplitter
AXSubrole:<nil>
Android
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
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
待定
ARIA 规范
tabpanel
计算角色
tabpanel
MSAA + IAccessible2
角色:ROLE_SYSTEM_PANE 或
ROLE_SYSTEM_PROPERTYPAGE
UIA
控件类型:Pane
ATK /AT-SPI
角色:ROLE_SCROLL_PANE
AX API [注 1 ]
AXRole:AXGroup
AXSubrole:AXTabPanel
Android
待定
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
待定
ARIA 规范
textbox
当 aria-multiline 为 false 时
计算角色
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
待定
ARIA 规范
textbox
当 aria-multiline 为 true 时
计算角色
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
待定
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
待定
ARIA 规范
timer
计算角色
timer
MSAA + IAccessible2
对象属性:xml-roles:timer
UIA
控件类型:Group
本地化控件类型:timer
ATK /AT-SPI
角色:ROLE_TIMER
AX API [注 1 ]
AXRole:AXGroup
AXSubrole:AXApplicationTimer
Android
待定
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
待定
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
待定
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 )。
本节描述如何暴露 WAI-ARIA
状态 和属性 。
表中有许多地方将给定状态或属性声明为“未映射”。在某些情况下,这发生在
状态/属性的默认值上,并且等同于其不存在。用户代理可能会发现直接映射该值比检查它是否为
默认值更快。为了计算效率,如果暴露状态或属性值等同于不映射它,则用户代理 MAY
暴露该状态或
属性值。这些情况用星号标记。
在其他情况下,强制要求不得映射该状态/属性,因为暴露它意味着存在
相关的可供性。一个示例是
aria-grabbed 。
它的缺失不仅表示该可访问对象未被抓取,还进一步将其定义为
不可抓取。这些情况标记为不带星号的“未映射”。
ARIA 规范
aria-atomic =true
MSAA + IAccessible2
对象属性:atomic:true
对象属性:
container-atomic:true
对象属性:所有后代上的 container-atomic:true
关系:IA2_RELATION_MEMBER_OF 指向
此元素(原子根)
另见:文档内容或
节点可见性的更改
UIA
属性:AriaProperties.atomic:
true
另见:文档内容或
节点可见性的更改
ATK /AT-SPI
对象属性:atomic:true
对象属性:
container-atomic:true
对象属性:所有后代上的 container-atomic:true
关系:RELATION_MEMBER_OF 指向此
元素(原子根)
另见:文档内容或
节点可见性的更改
AX API
属性:AXARIAAtomic:
YES
另见:文档内容或
节点可见性的更改
Android
待定
ARIA 规范
aria-atomic =false
MSAA + IAccessible2
未映射* ,但如果
映射:
对象属性:atomic:false
对象属性:
container-atomic:false
对象属性:所有后代上的 container-atomic:false
关系:IA2_RELATION_MEMBER_OF 指向
此元素(原子根)
另见:文档内容或
节点可见性的更改
UIA
属性:AriaProperties.atomic:
false
另见:文档内容或
节点可见性的更改
ATK /AT-SPI
未映射* ,但如果
映射:
对象属性:atomic:false
对象属性:
container-atomic:false
对象属性:所有后代上的 container-atomic:false
关系:RELATION_MEMBER_OF 指向此
元素(原子根)
另见:文档内容或
节点可见性的更改
AX API
属性:AXARIAAtomic:
NO
另见:文档内容或
节点可见性的更改
Android
待定
ARIA 规范
aria-autocomplete =inline、
list 或 both
MSAA + IAccessible2
对象属性:
autocomplete:<value>
状态:IA2_STATE_SUPPORTS_AUTOCOMPLETION
UIA
未映射
ATK /AT-SPI
对象属性:
autocomplete:<value>
状态:STATE_SUPPORTS_AUTOCOMPLETION
AX API
未映射
Android
待定
ARIA 规范
aria-braillelabel
MSAA + IAccessible2
对象属性:
braillelabel:<value>
UIA
属性:AriaProperties.braillelabel:
<value>
ATK /AT-SPI
对象属性:
braillelabel:<value>
AX API
属性:AXBrailleLabel
Android
待定
ARIA 规范
aria-brailleroledescription
MSAA + IAccessible2
对象属性:
brailleroledescription:<value>
UIA
属性:AriaProperties.brailleroledescription:
<value>
ATK /AT-SPI
对象属性:
brailleroledescription:<value>
AX API
属性:AXBrailleRoleDescription
Android
待定
ARIA 规范
aria-busy =true
MSAA + IAccessible2
状态:STATE_SYSTEM_BUSY
UIA
属性:AriaProperties.busy:
true
ATK /AT-SPI
状态:STATE_BUSY
AX API
属性:AXElementBusy:YES
Android
待定
ARIA 规范
aria-busy =false
MSAA + IAccessible2
状态:不暴露 STATE_SYSTEM_BUSY
UIA
属性:AriaProperties.busy:
false
ATK /AT-SPI
状态:不暴露 STATE_BUSY
AX API
属性:AXElementBusy:NO
Android
待定
ARIA 规范
aria-checked =true
MSAA + IAccessible2
状态:STATE_SYSTEM_CHECKED
对象属性:checkable:true
UIA
属性:Toggle.ToggleState:
On (1)
属性:SelectionItem.IsSelected:
对于 radio 和 menuitemradio 为
True
ATK /AT-SPI
状态:STATE_CHECKABLE
状态:STATE_CHECKED
AX API
属性:AXValue:1
属性:AXMenuItemMarkChar:对于
menuitemcheckbox 和 menuitemradio 为
✓
Android
待定
ARIA 规范
aria-checked =false
MSAA + IAccessible2
状态:不暴露
STATE_SYSTEM_CHECKED
对象属性:checkable:true
UIA
属性:Toggle.ToggleState:
Off (0)
属性:SelectionItem.IsSelected:
对于 radio 和 menuitemradio 为 False
ATK /AT-SPI
状态:STATE_CHECKABLE
状态:不暴露 STATE_CHECKED
AX API
属性:AXValue:0
属性:AXMenuItemMarkChar:
对于 menuitemcheckbox 和
menuitemradio 为 <nil>
Android
待定
ARIA 规范
aria-checked =mixed
MSAA + IAccessible2
状态:STATE_SYSTEM_MIXED
对象属性:checkable:true
UIA
属性:Toggle.ToggleState:
Indeterminate (2)
ATK /AT-SPI
状态:STATE_INDETERMINATE
状态:STATE_CHECKABLE
状态:不暴露 STATE_CHECKED
AX API
属性:AXValue:2
属性:AXMenuItemMarkChar:
对于 menuitemcheckbox 和
menuitemradio 为 <nil>
Android
待定
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
待定
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
待定
ARIA 规范
aria-colindextext
MSAA + IAccessible2
对象属性:
colindextext:<value>
UIA
属性:AriaProperties.colindextext:
<value>
ATK /AT-SPI
对象属性:
colindextext:<value>
AX API
属性:AXColumnIndexDescription:
<value>
Android
待定
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
待定
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
待定
ARIA 规范
aria-current
为非 false 允许值
MSAA + IAccessible2
对象属性:current:<value>
UIA
属性:AriaProperties.current:
<value>
ATK /AT-SPI
对象属性:
current:<value>
状态:STATE_ACTIVE
AX API
属性:AXARIACurrent:
<value>
Android
待定
ARIA 规范
aria-current
为无法识别的值
MSAA + IAccessible2
对象属性:current:true
UIA
属性:AriaProperties.current:
true
ATK /AT-SPI
对象属性:current:true
状态:STATE_ACTIVE
AX API
属性:AXARIACurrent:
true
Android
待定
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
待定
ARIA 规范
aria-description
MSAA + IAccessible2
属性:accDescription:
<value>
另见:名称
计算
UIA
属性:FullDescription:
<value>
另见:名称
计算
ATK /AT-SPI
属性:Description:
<value>
另见:名称
计算
AX API
在 accessibilityCustomContent API
中,暴露为一个
AXCustomContent 对象,其中 { label: "description" }
且 `value` 设置为描述
字符串。
另见:名称
计算
Android
待定
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
待定
ARIA 规范
aria-disabled =true
MSAA + IAccessible2
状态:STATE_SYSTEM_UNAVAILABLE
状态:所有具有 STATE_SYSTEM_FOCUSABLE 的
后代上的 STATE_SYSTEM_UNAVAILABLE
UIA
属性:IsEnabled:false
ATK /AT-SPI
状态:不暴露 STATE_ENABLED
AX API
属性:AXEnabled:NO
Android
待定
ARIA 规范
aria-disabled =false
MSAA + IAccessible2
状态:不暴露
STATE_SYSTEM_UNAVAILABLE
UIA
属性:IsEnabled:true
ATK /AT-SPI
状态:STATE_ENABLED
AX API
属性:AXEnabled:YES
Android
待定
ARIA 规范
aria-dropeffect =none
MSAA + IAccessible2
对象属性:如果没有其他有效令牌,则为 dropeffect:none
未映射* ,如果
作者未指定
UIA
未映射*
ATK /AT-SPI
对象属性:如果没有其他有效令牌,则为 dropeffect:none
未映射* ,如果
作者未指定
AX API
未映射*
Android
待定
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
待定
ARIA 规范
aria-expanded =true
MSAA + IAccessible2
状态:STATE_SYSTEM_EXPANDED
UIA
属性:ExpandCollapse.ExpandCollapseState:
Expanded
ATK /AT-SPI
状态:STATE_EXPANDABLE
状态:STATE_EXPANDED
AX API
属性:AXExpanded:YES
Android
待定
ARIA 规范
aria-expanded =false
MSAA + IAccessible2
状态:STATE_SYSTEM_COLLAPSED
UIA
属性:ExpandCollapse.ExpandCollapseState:
Collapsed
ATK /AT-SPI
状态:STATE_EXPANDABLE
状态:不暴露 STATE_EXPANDED
AX API
属性:AXExpanded:NO
Android
待定
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
待定
ARIA 规范
aria-grabbed =true
MSAA + IAccessible2
对象属性:grabbed:true
UIA
属性:AriaProperties.grabbed:
true
ATK /AT-SPI
对象属性:grabbed:true
AX API
属性:AXGrabbed:YES
Android
待定
ARIA 规范
aria-grabbed =false
MSAA + IAccessible2
对象属性:grabbed:false
UIA
属性:AriaProperties.grabbed:
false
ATK /AT-SPI
对象属性:grabbed:false
AX API
属性:AXGrabbed:NO
Android
待定
ARIA 规范
aria-invalid =true
MSAA + IAccessible2
状态:IA2_STATE_INVALID_ENTRY
文本属性:invalid:true
UIA
属性:IsDataValidForForm:
false
ATK /AT-SPI
状态:STATE_INVALID_ENTRY
文本属性:invalid:true
AX API
属性:AXInvalid:true
Android
待定
ARIA 规范
aria-invalid =false
MSAA + IAccessible2
状态:不暴露
IA2_STATE_INVALID_ENTRY
UIA
属性:IsDataValidForForm:
true
ATK /AT-SPI
状态:不暴露 STATE_INVALID_ENTRY
AX API
属性:AXInvalid:false
Android
待定
ARIA 规范
aria-invalid =spelling
或 grammar
MSAA + IAccessible2
状态:IA2_STATE_INVALID_ENTRY
文本属性:invalid:<value>
UIA
属性:IsDataValidForForm:
<value>
ATK /AT-SPI
状态:STATE_INVALID_ENTRY
文本属性:invalid:<value>
AX API
属性:AXInvalid:
<value>
Android
待定
ARIA 规范
aria-invalid
为无法识别的值
MSAA + IAccessible2
状态:IA2_STATE_INVALID_ENTRY
文本属性:invalid:true
UIA
属性:IsDataValidForForm:
false
ATK /AT-SPI
状态:STATE_INVALID_ENTRY
文本属性:invalid:true
AX API
属性:AXInvalid:true
Android
待定
ARIA 规范
aria-keyshortcuts
MSAA + IAccessible2
属性:accKeyboardShortcut:
<value>
UIA
属性:AcceleratorKey:
<value>
ATK /AT-SPI
对象属性:
keyshortcuts:<value>
AX API
属性:AXKeyShortcutsValue:
<value>
Android
待定
ARIA 规范
aria-label
MSAA + IAccessible2
属性:accName:
<value>
另见:名称
计算
UIA
属性:Name:
<value>
另见:名称
计算
ATK /AT-SPI
属性:Name:
<value>
另见:名称
计算
AX API
属性:AXTitle:
<value>
另见:名称
计算
Android
待定
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
待定
ARIA 规范
aria-level
在非 heading 上
MSAA + IAccessible2
对象属性:level:<value>
方法:IAccessible2::groupPosition():
在支持 aria-posinset 和 aria-setsize 的角色上为
groupLevel=<value>
另见:groupPosition()
UIA
属性:AriaProperties.level:
<value>
ATK /AT-SPI
对象属性:level:<value>
AX API
属性:AXDisclosureLevel:
<value>(从零开始),当用于大纲行(如
treeitem 或 group )时
Android
待定
ARIA 规范
aria-level
在 heading 上
MSAA + IAccessible2
对象属性:level:<value>
UIA
属性:AriaProperties.level:
<value>
属性:StyleId_Heading:
<value>
ATK /AT-SPI
对象属性:level:<value>
AX API
属性:AXValue:
<value>
Android
待定
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
待定
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
待定
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
待定
ARIA 规范
aria-modal =true
MSAA + IAccessible2
状态:IA2_STATE_MODAL
UIA
属性:Window.IsModal:
true
ATK /AT-SPI
状态:STATE_MODAL
AX API
剪除可访问性树,使背景内容不再暴露。
不在与带有
aria-modal="true" 的元素 相对应的可访问
对象 上设置特定属性。
只暴露以该模态可访问对象为根的树。
Android
待定
ARIA 规范
aria-modal =false
MSAA + IAccessible2
状态:不暴露 IA2_STATE_MODAL
UIA
属性:Window.IsModal:
false
ATK /AT-SPI
状态:不暴露 STATE_MODAL
AX API
扩展可访问性树,使背景内容被暴露。不在与带有
aria-modal="false" 的
元素 相对应的可访问
对象 上设置特定属性。
Android
待定
ARIA 规范
aria-multiline =true
MSAA + IAccessible2
状态:IA2_STATE_MULTI_LINE
状态:不暴露 IA2_STATE_SINGLE_LINE
UIA
属性:AriaProperties.multiline:
true
ATK /AT-SPI
状态:STATE_MULTI_LINE
状态:不暴露 STATE_SINGLE_LINE
AX API
未映射
另见:角色映射表中的 textbox
Android
待定
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
待定
ARIA 规范
aria-multiselectable =true
MSAA + IAccessible2
状态:STATE_SYSTEM_MULTISELECTABLE
状态:STATE_SYSTEM_EXTSELECTABLE
另见:选择
以了解可访问性事件的详细信息
UIA
属性:Selection.CanSelectMultiple:
true
另见:选择
以了解可访问性事件的详细信息
ATK /AT-SPI
状态:STATE_MULTISELECTABLE
另见:选择
以了解可访问性事件的详细信息
AX API
属性:AXIsMultiSelectable:
YES
另见:选择
以了解可访问性事件的详细信息
Android
待定
ARIA 规范
aria-multiselectable =false
MSAA + IAccessible2
状态:不暴露
STATE_SYSTEM_MULTISELECTABLE
状态:不暴露
STATE_SYSTEM_EXTSELECTABLE
另见:选择
以了解可访问性事件的详细信息
UIA
未映射*
ATK /AT-SPI
状态:不暴露 STATE_MULTISELECTABLE
AX API
未映射*
Android
待定
ARIA 规范
aria-orientation =horizontal
MSAA + IAccessible2
状态:IA2_STATE_HORIZONTAL
状态:不暴露 IA2_STATE_VERTICAL
UIA
属性:Orientation:
horizontal
ATK /AT-SPI
状态:STATE_HORIZONTAL
状态:不暴露 STATE_VERTICAL
AX API
属性:AXOrientation:
AXHorizontalOrientation
Android
待定
ARIA 规范
aria-orientation =vertical
MSAA + IAccessible2
状态:IA2_STATE_VERTICAL
状态:不暴露 IA2_STATE_HORIZONTAL
UIA
属性:Orientation:
vertical
ATK /AT-SPI
状态:STATE_VERTICAL
状态:不暴露 STATE_HORIZONTAL
AX API
属性:AXOrientation:
AXVerticalOrientation
Android
待定
ARIA 规范
aria-orientation
未定义
MSAA + IAccessible2
未映射*
UIA
未映射*
ATK /AT-SPI
状态:不暴露 STATE_VERTICAL
状态:不暴露 STATE_HORIZONTAL
AX API
属性:AXOrientation:
AXUnknownOrientation
Android
待定
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
待定
ARIA 规范
aria-placeholder
MSAA + IAccessible2
对象属性:
placeholder-text:<value>
UIA
属性:HelpText:
<value>
ATK /AT-SPI
对象属性:
placeholder-text:<value>
AX API
属性:AXPlaceholderValue:
<value>
Android
待定
ARIA 规范
aria-posinset
MSAA + IAccessible2
对象属性:
posinset:<value>
另见:组
位置
UIA
属性:AriaProperties.posinset:
<value>
另见:组
位置
ATK /AT-SPI
对象属性:
posinset:<value>
另见:组
位置
AX API
属性:AXARIAPosInSet:
<value>
另见:组
位置
Android
待定
ARIA 规范
aria-readonly =true
MSAA + IAccessible2
状态:STATE_SYSTEM_READONLY
UIA
属性:Value.IsReadOnly:true,
如果元素实现
IValueProvider 。
属性:RangeValue.IsReadOnly:
true,如果元素实现
IRangeValueProvider 。
属性:AriaProperties.readonly:
true
ATK /AT-SPI
状态:STATE_READ_ONLY
状态:在文本输入角色上不暴露 STATE_EDITABLE
状态:在支持 aria-checked
的角色上不暴露 STATE_CHECKABLE
状态:当用于 radiogroup 时,不在 radio 后代上暴露
STATE_CHECKABLE
AX API
方法:AXUIElementIsAttributeSettable(AXValue):
NO
Android
待定
ARIA 规范
aria-readonly =false
MSAA + IAccessible2
状态:不暴露
STATE_SYSTEM_READONLY
状态:IA2_STATE_EDITABLE
UIA
属性:Value.IsReadOnly:false,
如果元素实现
IValueProvider 。
属性:RangeValue.IsReadOnly:
false,如果元素实现
IRangeValueProvider 。
属性:AriaProperties.readonly:
false
ATK /AT-SPI
状态:不暴露 STATE_READ_ONLY
AX API
方法:AXUIElementIsAttributeSettable(AXValue):
YES
Android
待定
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
待定
ARIA 规范
aria-required =true
MSAA + IAccessible2
状态:IA2_STATE_REQUIRED
UIA
属性:IsRequiredForForm:
true
ATK /AT-SPI
状态:STATE_REQUIRED
AX API
属性:AXRequired:YES
Android
待定
ARIA 规范
aria-roledescription
MSAA + IAccessible2
方法:localizedExtendedRole():
<value>
UIA
本地化控件类型:<value>
ATK /AT-SPI
对象属性:
roledescription:<value>
AX API
属性:AXRoleDescription:
<value>
Android
待定
ARIA 规范
aria-roledescription 未定义
或为空字符串
MSAA + IAccessible2
未映射
UIA
本地化控件类型被定义为为元素角色指定的类型:
如果提供了 role 属性,则基于显式角色;否则,基于宿主语言的隐式
角色。
ATK /AT-SPI
未映射
AX API
AXRoleDescription 被定义为为元素角色指定的内容:
如果提供了 role 属性,则基于显式角色;
否则,基于宿主语言的隐式角色。
Android
待定
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
待定
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
待定
ARIA 规范
aria-rowindextext
MSAA + IAccessible2
对象属性:
rowindextext:<value>
UIA
属性:AriaProperties.rowindextext:
<value>
ATK /AT-SPI
对象属性:
rowindextext:<value>
AX API
属性:AXRowIndexDescription:
<value>
Android
待定
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
待定
ARIA 规范
aria-selected =true
MSAA + IAccessible2
状态:STATE_SYSTEM_SELECTABLE
状态:STATE_SYSTEM_SELECTED
另见:选择
以了解可访问性事件的详细信息
UIA
属性:SelectionItem.IsSelected:
true
ATK /AT-SPI
状态:STATE_SELECTABLE
状态:STATE_SELECTED
另见:选择
以了解可访问性事件的详细信息
AX API
属性:AXSelected:YES
Android
待定
ARIA 规范
aria-selected =false
MSAA + IAccessible2
状态:STATE_SYSTEM_SELECTABLE
状态:不暴露
STATE_SYSTEM_SELECTED
另见:选择
以了解可访问性事件的详细信息
UIA
属性:SelectionItem.IsSelected:
false
ATK /AT-SPI
状态:STATE_SELECTABLE
状态:不暴露 STATE_SELECTED
另见:选择
以了解可访问性事件的详细信息
AX API
属性:AXSelected:NO
Android
待定
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
待定
ARIA 规范
aria-sort =ascending
MSAA + IAccessible2
对象属性:sort:ascending
UIA
属性:AriaProperties.sort:
ascending
属性:ItemStatus:如果该元素映射到
HeaderItem
控件类型,则为 ascending
ATK /AT-SPI
对象属性:sort:ascending
AX API
属性:AXSortDirection:
AXAscendingSortDirection
Android
待定
ARIA 规范
aria-sort =descending
MSAA + IAccessible2
对象属性:sort:descending
UIA
属性:AriaProperties.sort:
descending
属性:ItemStatus:如果该元素映射到
HeaderItem
控件类型,则为 descending
ATK /AT-SPI
对象属性:sort:descending
AX API
属性:AXSortDirection:
AXDescendingSortDirection
Android
待定
ARIA 规范
aria-sort =other
MSAA + IAccessible2
对象属性:sort:other
UIA
属性:AriaProperties.sort:
other
属性:ItemStatus:如果该元素映射到
HeaderItem
控件类型,则为 other
ATK /AT-SPI
对象属性:sort:other
AX API
属性:AXSortDirection:
AXUnknownSortDirection
Android
待定
ARIA 规范
aria-sort =none
MSAA + IAccessible2
对象属性:如果该值不是未指定,则为 sort:none
UIA
未映射*
ATK /AT-SPI
对象属性:如果该值不是未指定,则为 sort:none
AX API
未映射*
Android
待定
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
待定
作为按角色映射 中的定义将角色映射到可访问对象的一部分,
用户代理会在对象上暴露默认动作。
MSAA :如果 AT 在可访问
对象上调用 DoDefaultAction,用户代理 SHOULD 在
映射到该可访问对象的
DOM 元素上模拟点击。
IAccessible2:如果 AT 在可访问对象上调用
IAccessibleAction,用户代理 SHOULD 在映射到该可访问对象的
DOM 元素上模拟点击。
UIA Automation:如果 AT
在可访问对象上调用任何 UIA 模式方法,用户
代理
SHOULD 在映射到该可访问对象的 DOM 元素上模拟点击。
ATK /AT-SPI :如果 AT 在可访问对象上调用某个
动作,用户代理 SHOULD 在映射到该可访问
对象的 DOM 元素上模拟点击。
AX API :如果 AT 在可访问
对象上触发 AXPress 动作,用户代理
SHOULD 在映射到该可访问对象的 DOM 元素上模拟点击。
注
作者需要为这些点击事件创建处理程序,以相应地更新
WAI-ARIA 状态和属性在
DOM 中的值,从而使这些更新后的状态能够由用户代理填充到可访问性
API 中。
用户代理 会为用户动作、WAI-ARIA 状态 更改、文档内容或节点可见性更改、
选择更改以及菜单操作触发事件 ,如下列章节所定义。
用户代理 MUST 按下表定义,将状态 更改通知给辅助技术 ;如果可访问性 API 为该属性定义了更改事件 ,则 SHOULD 将
属性 更改通知给辅助技术;如果可访问性 API
没有为该属性定义更改事件,则 SHOULD NOT 将
属性更改通知给辅助技术。例如,IAccessible2 定义了一个
在 aria-activedescendant
更改时使用的事件。
预期会更改的
WAI-ARIA 属性包括
aria-activedescendant 、
aria-valuenow 和 aria-valuetext 。
注
在某些 API 中,AT 只会收到其已订阅事件的通知。
为了简单性和性能,用户代理 MAY 剔除辅助技术通常会忽略的状态或属性更改事件,例如发生在当前没有焦点的窗口中的事件。
注
译者:关于以下表格及其切换按钮关联的标签文本,请参见本文档
<head> 节中的 mappingTableLabels 对象。
ARIA 规范
aria-activedescendant
MSAA + IAccessible2 事件
见焦点更改 。
此外:
IA2_EVENT_ACTIVE_DESCENDANT_CHANGED
UIA 事件
见焦点更改 。
此外:
PropertyChangedEvent
属性:AriaProperties
ATK /AT-SPI 事件
见焦点更改 。
AX API 通知
见焦点更改 。
此外:AXSelectedChildrenChanged
Android
待定
ARIA 规范
aria-busy
(状态)
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties
ATK /AT-SPI 事件
object:state-changed:busy
AX API 通知
AXElementBusyChanged
Android
待定
ARIA 规范
aria-checked
(状态)
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties,以及作为
toggle 模式一部分的 ToggleState
ATK /AT-SPI 事件
object:state-changed:checked
AX API 通知
AXValueChanged
Android
待定
ARIA 规范
aria-current
(状态)
MSAA + IAccessible2 事件
IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 事件
PropertyChangedEvent
属性:AriaProperties
ATK /AT-SPI 事件
object:state-changed:active
AX API 通知
AXCurrentStateChanged
Android
待定
ARIA 规范
aria-disabled
(状态)
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties、IsEnabled
ATK /AT-SPI 事件
object:state-changed:enabled 和
object:state-changed:sensitive
AX API 通知
AXDisabledStateChanged
Android
待定
ARIA 规范
aria-describedby
MSAA + IAccessible2 事件
EVENT_OBJECT_DESCRIPTIONCHANGE
UIA 事件
PropertyChangedEvent
属性:DescribedBy
ATK /AT-SPI 事件
object:property-change:accessible-description
AX API 通知
AXDescribedByChanged
Android
待定
ARIA 规范
aria-dropeffect
(属性,已弃用)
MSAA + IAccessible2 事件
IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 事件
PropertyChangedEvent
属性:AriaProperties
ATK /AT-SPI 事件
object:property-change
AX API 通知
AXDropEffectChanged
Android
待定
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
待定
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
待定
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
待定
ARIA 规范
aria-invalid
(状态)
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties、IsDataValidForForm
ATK /AT-SPI 事件
object:state-changed:invalid_entry
AX API 通知
AXInvalidStatusChanged
Android
待定
ARIA 规范
aria-label 和 aria-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
待定
ARIA 规范
aria-pressed
(状态)
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties,以及作为
toggle 模式一部分的 ToggleState
ATK /AT-SPI 事件
object:state-changed:pressed
AX API 通知
AXPressedStateChanged
Android
待定
ARIA 规范
aria-readonly
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties
ATK /AT-SPI 事件
object:state-changed:readonly
AX API 通知
AXReadOnlyStatusChanged
Android
待定
ARIA 规范
aria-required
MSAA + IAccessible2 事件
EVENT_OBJECT_STATECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties、IsRequiredForForm
ATK /AT-SPI 事件
object:state-changed:required
AX API 通知
AXRequiredStatusChanged
Android
待定
ARIA 规范
aria-selected
(状态)
MSAA + IAccessible2 事件
详见选择 章节。
UIA 事件
详见选择 章节。
ATK /AT-SPI 事件
详见选择 章节。
AX API 通知
详见选择 章节。
Android
待定
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
待定
ARIA 规范
aria-valuetext
MSAA + IAccessible2 事件
EVENT_OBJECT_VALUECHANGE
UIA 事件
PropertyChangedEvent
属性:AriaProperties
ATK /AT-SPI 事件
object:property-change:accessible-value
AX API 通知
AXValueChanged
Android
待定
无论是否存在 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_REMOVE 和 IA2_EVENT_TEXT_INSERTED
EVENT_OBJECT_LIVEREGIONCHANGED
text_changed::delete 和 text_changed::insert
如果位于实时区域 中,
AXLiveRegionChanged。 如果位于 aria-errormessage 中,
AXValidationErrorChanged。
对于所涉及的节点是元素且具有可访问对象 的节点更改,
触发以下事件。节点的
可访问性子树 是它在可访问性
树 中的可访问对象 及其所有
可访问性
后代 。它不包括在该树中通过非父子关系建立关系的对象。例如,除非通过
aria-flowto 链接的对象同时也是
可访问性树 中的后代,
否则它不包括这些对象。
文档更改场景以及各
API
中要触发的事件表
场景
MSAA
Microsoft UIA 事件
ATK /AT-SPI 事件
AX API 通知
当可访问性
子树 被隐藏 时
EVENT_OBJECT_HIDE
不使用名为
EVENT_OBJECT_DESTROY 的 MSAA 事件,
因为它存在稳定性问题的历史,辅助
技术会避免使用它。无论如何,从用户角度看,某物被隐藏和被销毁之间没有差别。
AutomationElement..::.StructureChangedEvent
children_changed::remove
AXUIElementDestroyed
如果位于实时区域中,AXLiveRegionChanged
当可访问性子树被移除时
EVENT_OBJECT_REORDER
不使用名为
EVENT_OBJECT_DESTROY 的 MSAA 事件,
因为它存在稳定性问题的历史,辅助
技术会避免使用它。无论如何,从用户角度看,某物被隐藏和被销毁之间没有差别。
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-live、
container-relevant、container-busy、container-atomic
对象属性 SHOULD 暴露在可访问事件对象上,
为相关 WAI-ARIA
属性提供计算值。计算值是最近祖先的值。建议在使用默认值时不暴露该对象属性。
可能还需要其他 MSAA 事件:
如果具有映射的 MSAA 角色
ROLE_SYSTEM_ALERT 的祖先中发生某些更改,
则 SHOULD 为该警报触发
EVENT_SYSTEM_ALERT 事件。
alert 角色对
aria-live
属性具有隐含值 "assertive"。
可能需要触发菜单事件。见菜单的特殊事件 。
下表定义了可访问性 API 键盘焦点状态和事件。
焦点状态和
事件 的
可访问性 API
表
MSAA
Microsoft UIA
ATK /AT-SPI
AX API
可聚焦状态
STATE_SYSTEM_FOCUSABLE
当前状态反映在
IUIAutomationElement::CurrentIsKeyboardFocusable 中,可使用
UIA_IsKeyboardFocusablePropertyId 属性标识符通过
IUIAutomationElement::GetCurrentPropertyValue 方法检索。
STATE_FOCUSABLE
boolean AXFocused:AXUIElementIsAttributeSettable 方法
返回 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
选择有两种情况:
在单选情况下,选择跟随焦点(关于焦点
事件的信息,请参见“焦点状态和事件表 ”章节)。用户
代理 MUST 在 aria-selected
更改时触发以下事件:
单选事件
场景
MSAA
Microsoft UIA
ATK /AT-SPI
AX API
焦点更改
在新聚焦的项目上触发 EVENT_OBJECT_SELECTION 和 EVENT_OBJECT_STATECHANGE。
在新聚焦的元素上触发 UIA_SelectionItem_ElementSelectedEventId。
如果位于 gridcell、row、option 或
tab 上,则触发 UIA_SelectionItem_ElementSelectedEventId。
在当前容器上触发 object:selection-changed,
在选择发生更改的后代可访问
对象 上触发 object:state-changed:selected:
对于刚刚变为选中的后代,detail1 = 1。
对于刚刚变为未选中的后代,detail1 = 0。
AXSelectedChildrenChanged
多选情况发生在支持该属性 的角色 的元素 上设置了
aria-multiselectable="true"
时。用户代理 MUST 在后代上的 aria-selected
如下更改时触发以下事件:
多选情况发生在支持该属性 的角色 的元素 上设置了
aria-multiselectable="true"
时。有几个重要方面:
在 Microsoft UIA 中,Selection 和
SelectionItem 控件模式暴露选择可用性、状态和
方法。
用户代理 MUST 在后代上的 aria-selected
如下更改时触发以下事件:
多选事件
场景
MSAA
Microsoft UIA
ATK /AT-SPI
AX API
切换 aria-selected
在该项目上触发
EVENT_OBJECT_SELECTIONADD/EVENT_OBJECT_SELECTIONREMOVE。
SelectionItem Control Pattern:在该
项目上触发 UIA_SelectionItem_ElementAddedToSelectionEventId
或 UIA_SelectionItem_ElementRemovedFromSelectionEventId。
在当前容器上触发 object:selection-changed,
在选择发生更改的任何后代可访问
对象 上触发
object:state-changed:selected:
对于任何刚刚变为选中的后代,detail1 = 1。
对于任何刚刚变为未选中的后代,detail1 = 0。
AXSelectedChildrenChanged
选择跟随焦点
在新聚焦的项目上触发 EVENT_OBJECT_SELECTION 和 EVENT_OBJECT_STATECHANGE。
FocusChangedEvent 应被触发,但单独的选择事件可能不会
发生,以避免冗余。
在当前容器上触发 object:selection-changed,
在选择发生更改的任何后代可访问
对象 上触发
object:state-changed:selected:
对于任何刚刚变为选中的可访问
对象 ,detail1 = 1。
对于任何刚刚变为未选中的可访问
对象 ,detail1 = 0。
AXSelectedChildrenChanged
一次选择或取消选择多个项目
用户代理 MAY 触发
EVENT_OBJECT_SELECTIONWITHIN。如果触发此事件,则为了性能,上述其他事件 MAY 被剔除。
对于每个被选中或取消选中的元素,在当前
容器上触发 SelectionItem 控件
模式:UIA_SelectionItem_ElementAddedToSelectionEventId 或
UIA_SelectionItem_ElementRemovedFromSelectionEventId。用户代理 MAY 选择触发 Selection 控件
模式 Invalidated 事件,它
表示容器中的选择发生了重大变化,需要
发送的添加和移除事件数量超过 InvalidateLimit 常量
允许的数量。
为了性能,用户代理 MAY 在容器上触发单个
object:selection-changed 事件,而不是多个
事件,
在选择发生更改的任何后代可访问
对象 上触发
object:state-changed:selected:
对于任何刚刚变为选中的可访问
对象 ,detail1 = 1。
对于任何刚刚变为未选中的可访问
对象 ,detail1 = 0。
AXSelectedChildrenChanged
某些 API 提供了需要遵循特定
算法的方法。以下章节提供这些方法的算法映射表。
ARIANotifyMixin 提供了一种向辅助技术通告内容的方法。以下
算法映射指定这些通告如何在不同的可访问性 API
中实现,以确保辅助技术用户获得一致的行为。
给定 node 、announcement 和 priority ,要执行
aria notify:
ARIA 规范
aria notify
前置条件
如果 node 被排除在
可访问性树之外 ,则中止这些步骤。
语言
用户代理和辅助技术 MUST 通过从以下来源获取第一个有效的
BCP 47 语言标记来确定通告的语言:
node 的最近祖先元素的 lang 属性
(包括
node
本身)。
文档元素的 lang 属性(包括在 document 上调用时)。
用户代理或平台默认值。
辅助技术 MUST 使用该语言呈现
通告(例如语音、发音规则、盲文表)。
MSAA + IAccessible2
未指定实现(见回退
注释 )。
UIA
如果 priority 为
"high",则令 mapped_priority 为
NotificationProcessing_ImportantAll,否则为
NotificationProcessing_All。
使用 node 、NotificationKind_ActionCompleted、
mapped_priority 、announcement 和空
字符串调用 UiaRaiseNotificationEvent。
注
如果平台可访问性实现确定 node 未在
UIA
Control
view 或
Content
view 中表示,则用户代理 SHOULD 改为在
被表示为 UIA Control 的最近祖先上触发
通知事件。如果不存在这样的祖先,则用户代理 SHOULD
在文档根上触发该事件(预期它会在这些视图之一中),以
确保忽略不在 Control 或 Content view 中的元素上的事件的辅助技术能够收到该通知。
ATK
如果 priority 为 "high",则令 mapped_priority 为
Atk.Live.ATK_LIVE_ASSERTIVE,否则为
Atk.Live.ATK_LIVE_POLITE。
使用 node 、
"notification"、announcement 和
mapped_priority 调用 g_signal_emit_by_name。
在 ATK 2.50.0 之前的较旧 Linux
可访问性栈上,用户代理 MAY 使用回退;见回退注释 。
AT-SPI
如果 priority 为 "high",则令 mapped_priority 为
ATSPI_LIVE_ASSERTIVE,否则为 ATSPI_LIVE_POLITE。
使用 node 、"announcement"、
announcement 和 mapped_priority 发送 DBUS 信号
ATSPI_DBUS_INTERFACE_EVENT_OBJECT。
AX API
如果 priority 为 "high",则令 mapped_priority 为
NSAccessibilityPriorityHigh,否则为
NSAccessibilityPriorityMedium。
令 userInfo 为带有以下
键的 NSDictionary:
NSAccessibilityAnnouncementKey 作为 announcement
NSAccessibilityPriorityKey 作为 mapped_priority
使用
node 、
NSAccessibilityAnnouncementRequestedNotification 和
userInfo 调用
NSAccessibilityPostNotificationWithUserInfo。
注
当没有合适的平台通知 API 可用时(例如,缺少较新 notification signal 的
ATK 2.50.0 之前的较旧 Linux
可访问性栈,或在 Windows 上用户
代理无法使用 UIA 时),用户代理 MAY
在其可访问性树中合成一个临时的、仅面向辅助技术的实时区域,
以传达 aria notify 通告。这类
回退节点不会暴露给 Web 内容,也不能被 Web 内容检测到,并且此行为不是
必需的。
根据 Web 平台
设计原则 ,本规范不提供任何可通过编程方式
确定信息是否正被辅助技术使用的接口。然而,本规范确实允许作者向辅助技术用户呈现
与不使用辅助技术的用户可获得的信息不同的信息。与使用 Web 技术栈的许多其他部分一样,
这可以通过 ARIA 和 CORE-AAM 规范的许多特性实现。这种内容差异可能被滥用来对
辅助技术用户执行
主动指纹识别 。
2022 年 11 月 14 日:为 colindextext/rowindextext 添加新的
AX API 映射
2024 年 1 月 4 日:修复:treegrid row 的错误计算角色
2023 年 10 月 31 日:更新 UIA aria-readonly 映射
2023 年 10 月 31 日:添加 aria-haspopup='grid' 映射
2023 年 10 月 31 日:更正 AXAPI 通知
2023 年 10 月 26 日:从 aria-describedby UIA 映射中移除
UIA_DescribedBy 属性
2023 年 10 月 12 日:使 haspopup='true' 映射与 haspopup='menu' 相同
2023 年 9 月 1 日:修复 AX API aria-haspopup 映射
2023 年 8 月 25 日:添加 role=image(img 的同义词)的映射
2023 年 8 月 17 日:为 computedrole 添加规范性预期和示例
2023 年 8 月 16 日:更新 aria-errormessage 的映射
2023 年 5 月 15 日:添加计算角色章节和映射
2023 年 5 月 8 日:更新 UIA ins/del
2023 年 4 月 13 日:添加 aria-braillelabel 和 aria-brailleroledescription 的映射
2023 年 4 月 9 日:更新注释角色 AXAPI 映射
2023 年 4 月 6 日:更新 aria-describedby 和 aria-description AXAPI
2023 年 4 月 6 日:更新 AXAPI 的 role='meter' subrole
2023 年 2 月 1 日:移除 AXAPI 特定的“group 中的 menuitem”指南
2023 年 2 月 1 日:更新 aria-keyshortcuts 的 AXAPI 映射
2023 年 2 月 1 日:更新 IA2 role='blockquote' 映射
2023 年 2 月 1 日:更新 paragraph
和 time 以及 caption 的 MSAA 映射
2022 年 11 月 1 日:起草隐私和安全章节
2022 年 10 月 13 日:修复:移除 label 和 legend
2022 年 10 月 12 日:移除 label 和 legend 的映射。
2021 年 4 月 5 日:更新 ATK 针对
aria-colindex、aria-colspan、aria-colcount、
aria-rowindex、aria-rowspan 和
aria-rowcount 的映射。
2020 年 4 月 6 日:更新 ATK 针对 alert
和 alertdialog 的映射。
2020 年 2 月 25 日:添加 comment、mark 和 suggestion
角色的映射。将 comment 纳入 aria-label 和组
位置的计算。
2020 年 2 月 25 日:添加 aria-description 的映射。
2019 年 11 月 3 日:移除 AX API 的显式 AXRoleDescription
值。用户代理应遵循
注释中描述的指南。
2019 年 10 月 22 日:为 AX API 添加 strong 和
emphasis 角色的映射。
2019 年 10 月 22 日:为 AX API 添加 code
角色的映射。
2019 年 10 月 21 日:为 ATK 、IA2 和 UIA 添加 aria-colindextext 和
aria-rowindextext
角色的映射。
2019 年 10 月 21 日:为 ATK 、IA2 和 UIA 添加 strong 和 emphasis
角色的映射。
2019 年 10 月 21 日:为 ATK 、IA2 和 UIA 添加 code 角色的映射。
2019 年 9 月 18 日:更新 MSAA 针对
subscript 和 superscript 的映射
2019 年 9 月 10 日:添加 generic 角色的映射。
2019 年 7 月 9 日:添加 insertion 和 deletion 角色的映射。
2019 年 5 月 14 日:添加 legend 角色的映射。
2019 年 5 月 14 日:添加 label 角色的映射。
2019 年 5 月 14 日:添加 time 角色的映射。
2019 年 4 月 25 日:添加 subscript 和 superscript 角色的映射。
2019 年 2 月 25 日:添加 meter 角色的映射。
2019 年 2 月 5 日:更新 UIA 状态和属性更改
事件。
2018 年 6 月 6 日:更新 UIA 针对
aria-placeholder 的映射。
2018 年 6 月 4 日:添加 blockquote、caption 和
paragraph 角色的映射。
2018 年 3 月 5 日:添加关于为 AXAPI 暴露渲染标签时使用 AXTitle 的说明。
2018 年 3 月 5 日:添加 aria-label、aria-labelledby 和
aria-describedby 的事件。
↑