出现多个错误时可访问性

时间:2018-11-05 13:53:50

标签: javascript html css wai-aria

我有一个名为error-component的角度分量。每次服务抛出错误时都会对其进行初始化。现在,当出现一个错误时,只有屏幕阅读器会读取该错误,但是在出现多个错误的情况下,屏幕阅读器只会读取一个错误,这就是最后一个错误。 错误来自服务端。有时服务会引发多个错误。

<div aria-live="polite" role="alert">
<error-component></error-component>
</div>

因此,当出现一个错误时,屏幕阅读器将读取该错误,但是如果出现多个错误,屏幕阅读器将仅读取第一个错误。

1 个答案:

答案 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”,那么您应该会听到所有错误。