Aller au contenu principal
Construire les composants et utiliser ARIA

JavaScript et accessibilité : rendre les changements perceptibles

Une interface JavaScript accessible expose commandes, états et mises à jour. Un changement visible n’est pas automatiquement annoncé par une technologie d’assistance.

Rédaction : RGAA Consulting · Références vérifiées le · RGAA 4.1.2

Le problème

Un résultat ajouté après clic peut échapper au lecteur d’écran. Le script peut aussi supprimer le focus ou désynchroniser un état : l’absence d’erreur JavaScript ne garantit pas l’accessibilité.

Exemple : mauvais et correct

Mauvais

<button id="ajouter" type="button">Ajouter un exemplaire</button>
<p id="resultat">0 exemplaire ajouté</p>
<script>
  let nombre = 0;
  document.querySelector("#ajouter").addEventListener("click", () => {
    nombre += 1;
    document.querySelector("#resultat").textContent = `${nombre} exemplaire(s) ajouté(s)`;
  });
</script>

Correct

<button id="ajouter" type="button">Ajouter un exemplaire</button>
<p id="resultat" role="status">0 exemplaire ajouté</p>
<script>
  let nombre = 0;
  document.querySelector("#ajouter").addEventListener("click", () => {
    nombre += 1;
    document.querySelector("#resultat").textContent = `${nombre} exemplaire(s) ajouté(s)`;
  });
</script>

La région de statut précède la mise à jour. Le compteur local peut être annoncé sans déplacer le focus, qui reste sur le bouton.

RGAA concerné

Les critères dépendent de l’élément, de son usage et des cas particuliers applicables. Voici les contrôles à examiner pour ce sujet.

Impact utilisateur

Une personne aveugle doit savoir si son action réussit. Au clavier, ajout de contenu, recherche ou validation doivent conserver un point de navigation stable.

Correction

  1. Gardez les commandes natives ; exposez les états des composants personnalisés. L’état annoncé d’un panneau doit suivre son affichage.
  2. Pour un résultat sans changement de contexte, utilisez une région adaptée : role="status" pour une confirmation ordinaire, alerte appropriée pour une erreur constituant un statut.
  3. Déplacez le focus seulement lorsque la transition le justifie. Contrôlez DOM, contenus cachés et parcours après les réponses asynchrones, y compris les échecs.

Méthode de test

  1. Activez au clavier : chaque fonction doit rester utilisable sans souris.
  2. Au lecteur d’écran, actualisez le compteur : le résultat doit être restitué sans déplacement du focus.
  3. Testez erreurs, chargement et actions répétées : états et messages doivent refléter la situation sans annonces contradictoires ni perte de repère.

Points de vigilance

  • Fonctionner sans JavaScript est une stratégie possible, pas une obligation universelle du RGAA.
  • aria-live ne remplace pas les rôles, noms et interactions du composant.

Sources officielles

Le RGAA fournit les critères de contrôle. Les ressources du W3C et du WHATWG complètent les méthodes de mise en œuvre ; elles ne remplacent pas les tests RGAA.