2011-08-02 2 views
12

J'essaie de faire fonctionner correctement une région aria-live avec JAWS 11 et IE8. En utilisant le code ci-dessous, je peux obtenir JAWS pour annoncer la nouvelle valeur quand le bouton est cliqué, mais le comportement n'est pas ce que je m'attendrais.aria-live et JAWS

JSFiddle of this example

<!DOCTYPE html> 
<html> 
<head></head> 
<body> 
    <button onclick="document.getElementById('statusbar').innerHTML = parseInt(document.getElementById('statusbar').innerHTML) + 1">Update</button> 
    <div id="statusbar" aria-live="polite">0</div> 
</body> 
</html> 

En utilisant ma JAWS11/configuration IE8, sur chaque clic du bouton I entendre:

 
Click number HTML Value (after click) JAWS says 
------------ ------------------------- --------- 
1    1       "Update button 0" 
2    2       "1" 
3    3       "2" 

Le problème, et ma question est la suivante: comment puis-je faire JAWS annoncer valeur actuelle de la région aria-live, plutôt que la valeur précédente de la région aria-live?

Je serais également intéressé par la façon dont les autres lecteurs d'écran géreront cette fonctionnalité.

+0

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? –

Répondre

12

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.

+0

Bonne réponse, merci! L'utilisation de aria-live = "polite" et de role = "alert" lit en effet la valeur courante (plutôt que la précédente) avec IE8 et JAWS 11, mais il lit deux fois la valeur courante. Un commentaire conditionnel pour

+0

@Daniel, merci pour la mise à jour sur IE8. Bonne chance! –

0

Si vous utilisez JAWS, je pense que vous devez également configurer le mode par défaut; parce que le lecteur d'écran a un mode "lecture seule". ce problème peut être résolu via la presse:

(Insérer + z) pour activer/désactiver les lecteurs d'écran en lecture seule.

http://www.mozilla.org/access/qa/win-webcontent-jaws.html

Questions connexes