Accessibility aria label、aria labelledby和aria Descriptiby:在屏幕阅读器中非常不可预见的行为

Accessibility aria label、aria labelledby和aria Descriptiby:在屏幕阅读器中非常不可预见的行为,accessibility,wai-aria,screen-readers,jaws-screen-reader,nvda,Accessibility,Wai Aria,Screen Readers,Jaws Screen Reader,Nvda,我刚刚注意到,虽然aria label、aria labelledby和aria descripedby属性据说对每个元素都有效(请参见),但它们似乎只对少数元素有效,如a,而不适用于NVDA和JAWS中的div或p 我创建了一个小代码笔来演示这个问题(使用浏览和聚焦模式浏览): 例如,在NVDA中,在a元素上,aria标签和aria标签dby似乎在浏览和聚焦模式下工作。但是,aria descripeby只在焦点模式下发布,而不是在浏览模式下发布 对于input元素,似乎没有一个属性在浏览模

我刚刚注意到,虽然
aria label
aria labelledby
aria descripedby
属性据说对每个元素都有效(请参见),但它们似乎只对少数元素有效,如
a
,而不适用于NVDA和JAWS中的
div
p

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

例如,在NVDA中,在
a
元素上,
aria标签
aria标签dby
似乎在浏览和聚焦模式下工作。但是,
aria descripeby
只在焦点模式下发布,而不是在浏览模式下发布

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

对于像
p
div
这样的“裸”文本元素,所有属性似乎都不起作用

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


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

ARIA没有定义辅助技术如何公开UI。它确实定义了如何通过可访问性API公开角色、状态和属性。这与HTML大体相同,HTML规范不定义/要求UI,这由浏览器决定。 例如,在aria标签的情况下,aria中要求将aria标签映射到中的可访问名称属性,而不是要求屏幕阅读器在任何给定元素(即作为音频UI的一部分公开)上宣布或不宣布该标签。 一般遵守的规则是,屏幕阅读器将在。他们将在most和上公布可访问的名称。他们在大多数情况下都不会宣布


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

感谢您的解释和提供来源。我问他们,也有一些关于NVDA的信息。Léonie Watson在Paciello集团网站上发表的关于这一点的文章很棒: