Scripts

31 janvier 2023

RGAA : Scripts

ARIA

Notes

Surcharge de propriété, support général bon

5 règles de base

  1. Privilégier le natif !
    Et tester la restitution.
  2. Ne pas changer la sémantique
    Sémantique de titre conservé, vérifié avec le validateur du W3C si besoin
    <div role="tab">
        <h2>Titre onglet</h2>
    </div>
  3. Composant interactif utilisable au clavier
    • Les composants doivent pouvoir être atteint à la tabulation, voir tabindex
    • Un bouton doit être sélectionnable avec espace et entrée
  4. Ne pas supprimer la sémantique des éléments interactifs ou empêcher leur restitution
    • Attention aria-hidden="true" s'hérite des parents
    • Pour bloquer l'accès à un bouton
      <button type="button" tab-index="-1">Menu</button>
  5. Tout composant interactif doit avoir un nom accessible
    Algorithme de calcul du nom accessible

Compatibilité

Rôle pertinent

Même pour les single page application ;
Un composant qui déclenche l'ouverture d'une page ou d'un onglet doit être un lien même si ce sont des actions Javascript

<a role="link" tabindex="0" onclick="myFunction()"></a>
<!-- ou -->
<a href="#" onclick="myFunction()"></a>

État et changements d'état

Changement de contexte

Message de statut

Informer les technologies d’assistance des messages d’alerte de confirmation ou de statut, sans déplacer le focus de l'utilisateur.
Ne pas en abuser, parfois contre-productif

Si le focus est déplacé sur le message ok/Ko général alors pas besoin de mettre le role="alert" ou si la page se recharge et que le bloc est dans le DOM Dans tous les cas on fait une reprise de focus.

En cas d'erreur, ont se déplace l'utilisateur sur le premier champ en erreur/ ou message de confirmation + le mieux et de mettre aussi un message dans le titre de la page

Messages d'erreurs — Haute priorité

role="alert"
Le "alert" est restituée correctement
<p role="alert">Ceci est une alerte ajoutée dynamiquement</p>
Méthode alternative :
aria-live="assertive"
et
aria-atomic="true"

Messages d'informations — Attends que ce soit son tour pour être vocalisé

Pas très fiable coté restitution, préféré le "alert" si ça beug

<p role="status">Ceci est un status ajouté dynamiquement</p>
Méthode alternative :
aria-live="polite"
et
aria-atomic="true"
<p><span id="myLiveRegion1" aria-live="polite">Mais je sais rester polie</span></p>

Messages de notifiactions

role="log"
Méthode alternative : aria-live="polite"
et
aria-atomic="false"

Messages d’attente

role="progressbar"

Seulement pour des tâches qui prennent beaucoup de temps.

<div role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">20 %</div>
ou
<div role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuetext="Étape 2&nbsp;: Copie des fichiers…" aria-valuemax="100">
    Étape 2&nbsp;: Copie des fichiers…
</div>

Repositionner le focus sur un élément pertinent, par exemple la zone mise à jour

Ressources

Motif de conception

Motif de conception (design pattern) : décrit structure, rôles et propriétés et comportement d’un composant JavaScript(widget).
ARIA authoring practices

Environnement de test

Il est nécessaire de réaliser des tests de restitution et d'utilisation avec les lecteurs d'écran de la base de référence.
Guide sur les lecteurs d'écran.

Environnement de bureau
Technologie d’assistance Navigateur
NVDA (dernière version) Firefox
JAWS (version précédente) Firefox
VoiceOver (dernière version) Safari
Environnement mobile
Système Technologie d’assistance Navigateur
iOS VoiceOver (dernière version) Safari
Android Talkback (dernière version) Chrome

Pour tester un site web sur un terminal mobile, l’environnement de test devra comporter une des deux combinaisons (iOS ou Android). À noter que dans le cas d’un site web mobile grand public, il est fortement conseillé de tester dans les deux environnements.

Tableau d'évaluation d'un modif de conception aria (.xlsx 128ko)

Retour en haut