aria-label,aria-labelledby和aria-describedby:在屏幕阅读器中非常不可预见的行为

时间:2015-10-05 14:33:16

标签: accessibility wai-aria screen-readers jaws-screen-reader nvda

我刚才注意到虽然据说aria-labelaria-labelledbyaria-describedby属性适用于每个元素(参见http://www.w3.org/TR/wai-aria/states_and_properties#aria-describedby),但它们似乎只适用于像a这样的元素很少,而不是像NVDA和JAWS中的divp

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

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

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

对于input元素,所有属性似乎都不适用于浏览模式,但所有属性都在焦点模式下工作。

对于pdiv等“裸”文本元素,所有属性似乎都无效。

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

我真的没有看到明确的模式,所以我想知道如何使用这些属性的屏幕阅读器的一般规则是什么?或者更好:为什么他们不按照规范提出的那样只为每个元素工作?

1 个答案:

答案 0 :(得分:8)

ARIA没有定义辅助技术如何公开UI。它确实定义了browsers are required如何通过可访问性API公开角色,状态和属性。一般来说HTML也是如此,HTML规范没有定义/要求用户界面,由浏览器决定。 在aria-label(例如)的情况下,ARIA要求aria-label映射到accessibility APIs中的可访问名称属性,这不是屏幕阅读器宣布或不宣布它的要求任何给定元素(即作为听觉UI的一部分公开)。 一般观察到的规则是屏幕阅读器将在accessible names and accessible descriptions上宣布interactive elements。他们会在大多数grouping elementssectioning elements上宣布可访问的名称。他们会在大多数text level elements上宣布

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