因此,我尝试访问可通过tabIndex
聚焦的div的标签。但是,由于某种原因(由于标签位于div之外),因此无法提取标签。
但是,正在为具有相同aria-labelledby
的输入获取标签。知道如何让div与输入类似地从其外部读取吗?
很明显,如果我在div中包含标签,它就可以工作。
代码可以在这里看到: https://jsfiddle.net/b1ca7tm9/1/
我希望div也可以在自身之外获取标签。
仅供参考:您可以查看/收听正在为输入而不是div读取/显示的标签。您可以通过Mac上的画外音或Windows上的NVDA进行验证。
答案 0 :(得分:0)
根据您提供的代码,最可能出现的问题是,即使使用tabindex使div成为焦点,它的作用仍然是div,它是非交互元素。
尽管ARIA规范暗示可以将aria-labeledby用于任何元素,但实际上,大多数屏幕阅读器和浏览器仅将aria-labeledby用于交互式元素,并选择非交互式元素。这是因为aria-labeledby将由屏幕阅读器而不是元素的内容读取,这在大多数情况下对屏幕阅读器用户不利。
如果该元素获得焦点,则很可能是交互式的,因此解决方法是为其提供一个与其预期功能(例如按钮)相对应的aria role。如果它确实是非交互式的,则可能不应该按Tab键排列。如果您提供有关div的目的的更多背景信息,我可以就更合适的角色提供一些更详细的建议
另一方面,tabindex =“ 0”通常比在制表符顺序中声明特定位置更好。 Tabindex =“ 0”将允许该元素获得焦点,但不强制指定位置(如果它本身是可聚焦的,它将随其在Tab键顺序中的位置而变化)。这样,您就不必四处添加tabindexes到页面上的每个交互式元素