7

我刚刚注意到,虽然aria-label,aria-labelledbyaria-describedby属性据说适用于每个元素(参见https://www.w3.org/WAI/PF/aria-1.1/states_and_properties#aria- describeby),但它们似乎只适用于很少有类似的元素a,而不是例如divpNVDA 和 JAWS 中的元素。

我创建了一个小代码笔来演示这个问题(使用浏览和焦点模式浏览它):

https://codepen.io/jmuheim/pen/avWbPe

例如,在 NVDA 中,在a元素上,aria-labelaria-labelledby似乎在浏览模式和焦点模式下都有效。但aria-describedby只在焦点模式下宣布,而不是在浏览模式下。

对于input元素,似乎没有一个属性在浏览模式下工作,但都在焦点模式下工作。

p对于像or这样的“纯”文本元素div,似乎没有一个属性起作用。

在 JAWS 中,这是非常相似的行为,但至少对于p元素而言,当有 时aria-describedby,它宣布可以通过按“JAWS + alt + r”来读取描述。

我真的没有看到明确的模式,所以我想知道屏幕阅读器中关于如何使用这些属性的一般规则是什么?或者更好:为什么不像规范建议的那样,它们只适用于每个元素?

4

1 回答 1

10

ARIA 没有定义辅助技术如何公开 UI。它确实定义了浏览器如何通过可访问性 API 公开角色、状态和属性。通常与 HTML 相同,HTML 规范没有定义/要求 UI,这由浏览器决定。在 aria-label 的情况下(例如),ARIA 要求 aria-label 映射到可访问性 API中的可访问名称属性,而不要求屏幕阅读器在任何给定元素上宣布或不宣布它(即作为听觉 UI 的一部分公开)。一般观察到的规则是屏幕阅读器会在交互元素上宣布可访问的名称和可访问的描述。他们将在大多数网站上公布可访问的名称分组元素分段元素他们不会在大多数文本级元素上宣布。

注意:以上内容也适用于其默认语义被 ARIA 角色覆盖的任何元素。例如,ARIA 小部件角色将同时宣布 acc 名称和描述,就像原生 HTML 交互元素一样。

于 2015-10-06T13:50:27.973 回答