Javascript 出现多个错误时的可访问性

Javascript 出现多个错误时的可访问性,javascript,html,css,wai-aria,Javascript,Html,Css,Wai Aria,我有一个叫做误差分量的角度分量。每次服务抛出错误时,它都会被初始化。现在,当出现一个错误时,只有屏幕阅读器读取该错误,但在出现多个错误的情况下,屏幕阅读器仅读取一个错误,这是最后一个错误。 错误来自服务端。有时服务会抛出多个错误 <div aria-live="polite" role="alert"> <error-component></error-component> </div> 因此,当出现一个错误时,屏幕阅读器将读取该错误,但如果

我有一个叫做误差分量的角度分量。每次服务抛出错误时,它都会被初始化。现在,当出现一个错误时,只有屏幕阅读器读取该错误,但在出现多个错误的情况下,屏幕阅读器仅读取一个错误,这是最后一个错误。 错误来自服务端。有时服务会抛出多个错误

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


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

我在回答您关于指定
role=“alert”
aria live=“polite”
的问题时提到了这一点

您的代码示例正在指定冲突信息。使用role=“alert”可以为您提供一个隐式的aria live=“assertive”,但您也可以指定aria live=“politive”。我建议删除role=“alert”。有aria live=“polite”就足够了

因此,当您为aria live指定两个不同的值时,结果是未知的。假设aria live=“assertive”优先,assertive的声明如下:

当发生断言更改时,用户代理或辅助技术可以选择清除排队的更改

因此,如果您有多条断言消息,则上一条断言消息可能会被下一条断言消息清除。(这取决于个人辅助技术。例如,JAWS可能会清除之前的消息,但NVDA可能不会。)

如果您将错误消息aria live=“polite”,则您可能会听到所有消息。这取决于页面何时刷新以及屏幕阅读器缓冲区何时更新。如果在
中更新消息,屏幕读取器缓冲区更新,然后在
中再次更新消息,屏幕读取器缓冲区更新,则当用户交互暂停时,应读取排队的错误消息。但同样,这可能是一个时机问题

当您有多条错误消息时,视觉上会发生什么?你能同时看到所有的消息吗?或者你是短暂地看到一条消息,然后被下一条消息覆盖


如果您创建了多个可视的
元素,以便可以同时查看所有消息,并且将这些组件的容器设置为aria live=“little”,那么您应该可以听到所有错误。

aria live=“little”
需要用户空闲才能阅读所有错误消息。我认为,
assertive
会中断用户流并读取所有消息。如果我不使用role=“alert”,则AT没有读取我的邮件。那么您有不同的编码问题。我使用的是
aria live=“little”
,它适用于所有浏览器和所有屏幕阅读器。我从来没有遇到过问题。aria live实际上在不使用alert的情况下工作。谢谢你的信息。真的帮了我。那么我不明白你对我答案的第一个评论。你说没有警报它就不能工作,现在你说没有警报它也能工作。发生了什么变化?即使是多个aria live=“little”也似乎没有缓冲