2016-05-12 94 views
0

我添加了下面的一段代码,使屏幕阅读器读取的警告消息:角色=“警报”只是工作首次

<aside aria-live="assertive" aria-atomic="true" role="alert" ng-show="login.hasWarning();" translate="{{message}}"></aside> 
 

 
<form> 
 
    <!--form content--> 
 
</form>

它可以完美的第一次,但是当我再次提交错误时,它不会再次读取更新的错误消息。我错过了什么?

在此先感谢。

回答

1

你是否再次输入相同的错误信息?如第一次推“错误101”,然后第二次推“错误101”?

如果是这样的话: JAWS/VoiceOver/NVDA只读取活动区域的更新。如果用相同的文本替换文本,则不会将其视为更新。 在推送新的错误消息之前,用空字符串替换文本。请注意,JAWS可能会说“空白”,具体取决于浏览器和用户设置。

+0

嗨朱莉,谢谢你的回答。 –

+0

你知道为什么所有主要的屏幕阅读器(JAWS/VoiceOver/NVDA)都选择这么做吗?是否有任何解决方法,比如在消息结尾处添加随机空白等,以便屏幕阅读器再次阅读它? –

+0

因为这是WAI-ARIA规范。 (https://www.w3.org/TR/wai-aria/states_and_properties#aria-live)SR正在读取对活动区域的更改。如果您的更新不是更改,则SR不会读取它。在消息的开头和结尾添加空格可能适用于VoiceOver,并且可能不适用于JAWS。如果您对JAWS可能会说“空白错误101”而不是“错误101”感到满意,请运行$(“[aria-live]”)。text(“”); $(“[aria-live]”)。text(“Error 101”);至少会被阅读。 – Juli