2016-05-12 14 views
0

ich das folgende Stück Code hinzugefügt haben, um Screen-Reader zu machen lesen Sie die Warnmeldung:role = „alert“ wird nur zum ersten Mal arbeiten

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

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

Es funktioniert perfekt für die Beim ersten Mal, wenn ich den Fehler erneut begehe, wird die aktualisierte Fehlermeldung jedoch nicht erneut gelesen. Was vermisse ich?

Vielen Dank im Voraus.

Antwort

1

Drücken Sie die gleiche Fehlermeldung erneut? Wie in, beim ersten Mal "Error 101" drücken, dann "Error 101" das zweite Mal drücken?

Wenn ja: JAWS/VoiceOver/NVDA liest nur Updates für die Live-Region. Wenn Sie Text durch identischen Text ersetzen, zählt dies nicht als Update. Ersetzen Sie den Text durch eine leere Zeichenfolge, bevor Sie die neue Fehlermeldung drücken. Beachten Sie, dass JAWS je nach Browser und Benutzereinstellungen "Leer" sagen kann.

+0

HI Juli, danke für deine Antwort. –

+0

Haben Sie eine Idee, warum all die großen Screenreader (JAWS/VoiceOver/NVDA) dies tun? Und gibt es irgendwelche Arbeiten, sagen wir wie das Hinzufügen von zufälligen Leerstellen am Ende der Nachricht usw., damit die Screenreader es wieder lesen? –

+0

Weil das die WAI-ARIA-Spezifikation ist. (https://www.w3.org/TR/wai-aria/states_and_properties#aria-live) Der SR liest Änderungen in der Live-Region. Wenn Ihr Update keine Änderung ist, liest es die SR nicht. Das Hinzufügen leerer Leerzeichen am Anfang und Ende der Nachricht funktioniert möglicherweise mit VoiceOver und wird wahrscheinlich nicht mit JAWS funktionieren. Wenn Sie sich wohl fühlen, dass JAWS möglicherweise "blank Error 101" anstelle von "Error 101" sagt, wird $ ("[aria-live]") ausgeführt. Text (""); $ ("[aria-live]"). text ("Fehler 101"); wird zumindest gelesen werden. – Juli

Verwandte Themen