为什么aria-labeled不能从外部获取div的值?

时间:2019-06-18 19:32:07

标签: html accessibility

因此,我尝试访问可通过tabIndex聚焦的div的标签。但是,由于某种原因(由于标签位于div之外),因此无法提取标签。

但是,正在为具有相同aria-labelledby的输入获取标签。知道如何让div与输入类似地从其外部读取吗?

很明显,如果我在div中包含标签,它就可以工作。

代码可以在这里看到: https://jsfiddle.net/b1ca7tm9/1/

我希望div也可以在自身之外获取标签。

仅供参考:您可以查看/收听正在为输入而不是div读取/显示的标签。您可以通过Mac上的画外音或Windows上的NVDA进行验证。

1 个答案:

答案 0 :(得分:0)

根据您提供的代码,最可能出现的问题是,即使使用tabindex使div成为焦点,它的作用仍然是div,它是非交互元素。

尽管ARIA规范暗示可以将aria-labeledby用于任何元素,但实际上,大多数屏幕阅读器和浏览器仅将aria-labeledby用于交互式元素,并选择非交互式元素。这是因为aria-labeledby将由屏幕阅读器而不是元素的内容读取,这在大多数情况下对屏幕阅读器用户不利。

如果该元素获得焦点,则很可能是交互式的,因此解决方法是为其提供一个与其预期功能(例如按钮)相对应的aria role。如果它确实是非交互式的,则可能不应该按Tab键排列。如果您提供有关div的目的的更多背景信息,我可以就更合适的角色提供一些更详细的建议

另一方面,tabindex =“ 0”通常比在制表符顺序中声明特定位置更好。 Tabindex =“ 0”将允许该元素获得焦点,但不强制指定位置(如果它本身是可聚焦的,它将随其在Tab键顺序中的位置而变化)。这样,您就不必四处添加tabindexes到页面上的每个交互式元素