我有一个名为error-component的角度分量。每次服务抛出错误时都会对其进行初始化。现在,当出现一个错误时,只有屏幕阅读器会读取该错误,但是在出现多个错误的情况下,屏幕阅读器只会读取一个错误,这就是最后一个错误。 错误来自服务端。有时服务会引发多个错误。
<div aria-live="polite" role="alert">
<error-component></error-component>
</div>
因此,当出现一个错误时,屏幕阅读器将读取该错误,但是如果出现多个错误,屏幕阅读器将仅读取第一个错误。
答案 0 :(得分:1)
我在关于您的previous question的回答的开头提到了有关指定role="alert"
和aria-live="polite"
的问题。
您的代码示例正在指定冲突的信息。使用role =“ alert”给您一个隐式的aria-live =“ assertive”,但是您也要指定aria-live =“ polite”。我建议删除role =“ alert”。拥有aria-live =“ polite”就足够了。
因此,当您为aria-live指定两个不同的值时,结果未知。假设aria-live =“ assertive”处于优先地位,则spec为断言:
用户代理或辅助技术 MAY 选择在发生肯定性更改时清除排队的更改。
因此,如果您有多个断言消息,则上一条断言消息可能会被下一条断言消息清除。 (这取决于具体的辅助技术。例如,JAWS可能会清除前一条消息,而NVDA可能不会。)
如果您将错误消息设为aria-live =“ polite”,则您可能听到所有消息。这取决于页面刷新的时间和屏幕阅读器缓冲区的更新时间。如果您更新<error-component>
中的消息,并且屏幕阅读器缓冲区也更新,然后再次更新<error-component>
中的消息,并且屏幕阅读器缓冲区也更新,那么当用户交互暂停时,应读取排队的错误消息。但这又可能是时间问题。
当您有多个错误消息时,视觉上会发生什么?您可以同时看到所有消息吗,还是先简短地看到一条消息然后被下一条消息覆盖?
如果您创建多个可视<error-component>
元素,以便可以同时 AND 看到所有消息,则将这些组件的容器设置为aria-live =“ polite”,那么您应该会听到所有错误。