Votre code est correct. Apparemment, le "1 derrière" a été discovered. À partir du lien, il semble que l'utilisation de aria-atomic="true"
peut résoudre le problème. Toutefois, l'exemple donné fonctionne correctement dans IE9 et Firefox.
Si vous ne les avez pas déjà trouvés, consultez les cas de test sur codetalks et accessibleculture.org. Il y a beaucoup de différences subtiles à connaître. Ne soyez pas surpris quand les tests échouent! Au cours de la dernière année, j'ai rencontré quelques astuces (inadéquates) qui pourraient vous aider.
Méthode 1: role="alert"
Le alert
rôle est équivalent à supposed to bearia-live="assertive"
, mais les anciennes versions de JAWS ne gèrent pas correctement. Consultez these examples de Février 2011, qui stipule que:
Si vous cherchez à soutenir JAWS 10 dans IE7 ou IE8 du tout, il est probable préférable de doubler sur les alertes à la fois le rôle = « alerte » et aria -live = "assertif". Bien que cela soit quelque peu redondant puisque, par définition, le rôle d'alerte doit être traité en tant que région active assertive, cela permet à JAWS 10 d'annoncer automatiquement le contenu de l'alerte mise à jour dans ces deux navigateurs.
Firefox4 + et IE9 ne l'exigent pas. Mais ce serait quelque chose comme ceci:
<div id="statusbar" role="alert" aria-live="assertive">
Contents will be spoken when changed
</div>
Méthode 2: Mettre l'accent forçant pirater
En créant dynamiquement un élément DOM et en forçant mise au point, vous pouvez « truc » la plupart des lecteurs d'écran dans la lecture de la Contenu. C'est hackish, mais efficace ... et un peu le point de l'exemple Create and Focus. Simplifié, vous pouvez faire quelque chose comme ceci:
<div id="statusbar" role="alert" tabindex="-1"></div>
$('#statusbar')
.clear()
.append('<div>' + newString + '</div>')
.children().first().focus()
;
Le simple fait de cacher/montrer le contenu au lieu fonctionne en fait assez bien la plupart du temps. Cependant, le focus de VoiceOver s'attarde sur l'élément et ne parle pas son contenu lorsqu'il est à nouveau affiché. Ainsi, l'enlever du DOM semble être la méthode la plus infaillible pour le moment.Je ne l'aime pas, mais tel est l'état des choses.
Le même problème ne semble pas se produire dans [cette vidéo montrant en direct-aria] (http://www.youtube.com/watch?v=9nZnTdSAkH0#t=3m8s) - peut-être c'est quelque chose à voir avec ma configuration spécifique? –