一旦您通过 Javascript 将焦点更改为某个元素,我无法弄清楚如何让 Chromevox 读取该元素。以 OpenAjax 中找到的示例为例。当您单击“显示主题 1”按钮时,受控元素将展开,焦点将移至该元素。然而,在 Chromevox 中,它不读取元素的内容,而只是读取 aria-labelledby。
为了让 Chromevox 在展开后读取元素的内容,我必须移出并再次移入。不是很好的用户体验。
这是 Chromevox 的问题还是有更好的方法来解决这个问题?
注意:忽略其他三个示例,它们的 aria-labelledby 属性中有拼写错误,因此无法正常运行。
最佳答案
ajax 示例并不适合模仿。除了您提到的 t2/m2 拼写错误之外,它们还有竞争标签。有一个(隐藏)<div>
包含文本(“主题 1 是关于...”)并且有一个 aria-labelledby
.
根据可访问名称计算规则,https://www.w3.org/TR/accname-1.1/#step2 ,aria-labelledby
在步骤 2.B.first-bullet 中进行处理,然后该过程完成。 <div>
内的文字应该被忽略。
如果没有 aria-labelledby
,然后您将进入步骤 2.G,内部文本将是可访问的名称(并由屏幕阅读器读取)。
因此,您看到/听到冲突,这可能取决于浏览器如何解释这些规则以及屏幕阅读器读取的文本。
NVDA 读取两者aria-labelledby
和文字。
JAWS 仅读取 aria-labelledby
,这在技术上是正确的。
听起来 Chromevox 正在做与 JAWS 相同的事情,这是正确的。
关于javascript - 屏幕阅读器 Chromevox 在聚焦时不读取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361100/