我刚刚注意到,虽然aria-label
,aria-labelledby
和aria-describedby
属性据说适用于每个元素(参见https://www.w3.org/WAI/PF/aria-1.1/states_and_properties#aria- describeby),但它们似乎只适用于很少有类似的元素a
,而不是例如div
或p
NVDA 和 JAWS 中的元素。
我创建了一个小代码笔来演示这个问题(使用浏览和焦点模式浏览它):
https://codepen.io/jmuheim/pen/avWbPe
例如,在 NVDA 中,在a
元素上,aria-label
和aria-labelledby
似乎在浏览模式和焦点模式下都有效。但aria-describedby
只在焦点模式下宣布,而不是在浏览模式下。
对于input
元素,似乎没有一个属性在浏览模式下工作,但都在焦点模式下工作。
p
对于像or这样的“纯”文本元素div
,似乎没有一个属性起作用。
在 JAWS 中,这是非常相似的行为,但至少对于p
元素而言,当有 时aria-describedby
,它宣布可以通过按“JAWS + alt + r”来读取描述。
我真的没有看到明确的模式,所以我想知道屏幕阅读器中关于如何使用这些属性的一般规则是什么?或者更好:为什么不像规范建议的那样,它们只适用于每个元素?