Compatible avec les technologies d’assistance
7.1 [A] Les scripts doivent être compatibles avec les technologies d’assistance.
Voir la page WAI-ARIA et la fiche de test d’un composant « accordéon ».
Accessible via une API d’accessibilité
Le nom, le rôle, la valeur, le paramétrage et les changements d’état des composants doivent être accessibles aux technologies d’assistance via une API d’accessibilité. En pratique, ces informations doivent être transmises via des attributs correspondant à des rôles, des états et des propriétés ARIA.
Insertion de contenu
Ne pas utiliser la méthode document.write()
et les propriétés innerHTML
, outerHTML
, innerText
et outerText
pour insérer du contenu dans une page.
Utiliser les fonctions createElement()
, createTextNode()
, appendChild()
, insertBefore()
, insertAfter()
, removeChild()
, replaceChild()
, etc.
Conforme aux motifs de conception ARIA
Tout composant dont le rôle correspond à celui d’un motif de conception ARIA doit être conforme à ce motif de conception (ou être une adaptation conforme de ce motif de conception).
Respect du rôle natif des éléments HTML
Toute modification du rôle natif d’un élément HTML doit respecter les règles et préconisations indiquées dans la spécification HTML5 et les notes techniques associées. Voir en particulier le document Notes on Using ARIA in HTML.
Restitution correcte par les technologies d’assistance
Vérifier que les composants d’interface exposant des rôles correspondant à des motifs de conception ARIA (ou le rôle ARIA application
) sont correctement restitués par les technologies d’assistance.
Alternative pertinente
7.2 [A] Ce critère concerne, le cas échéant, les alternatives aux scripts, ainsi que les alternatives des éléments mis à jour par des scripts.
Lorsqu’une alternative est proposée, cette alternative doit permettre d’accéder à des contenus ou à des fonctionnalités similaires. Par ailleurs, dans le cas où un script aurait pour effet de mettre à jour un élément non textuel possédant une alternative (une image, par exemple), ce script doit également prendre en charge la mise à jour de cette alternative de manière pertinente.
N.B. : La fourniture d’une alternative entre les balises <noscript>
et </noscript>
nécessitant la désactivation de JavaScript pour y accéder n’est pas une méthode acceptable.
Contrôlable par le clavier et la souris
7.3 [A] Tout composant d’interface doit être contrôlable par le clavier et la souris. Contrôlable signifie qu’il doit être accessible et activable. Par ailleurs, les scripts ne doivent pas avoir pour effet d’empêcher la réception du focus sur les éléments qui le reçoivent naturellement.
Lorsqu’un composant d’interface fait référence à un motif de conception ARIA, les interactions au clavier doivent être conformes à celles spécifiées – au moins pour la touche Tabulation (et Majuscule + Tabulation), les flèches de direction et les touches Entrée et Échappement. La gestion des interactions au clavier pour les autres touches (comme les touches Page suivante, Page précédente, Début, Fin, etc.) n’est pas exigée.
N.B. : Le critère peut être non applicable pour certaines applications, notamment lorsque leur fonctionnement repose sur la gestion d’événements autres que des événements courants de clavier et de souris. On ne peut exiger par exemple qu’une application de dessin ou de peinture soit entièrement contrôlable au clavier.
Changements de contexte
7.4 [A] Pour chaque script ayant pour effet de provoquer un changement de contexte (une modification substantielle du contenu de la page), l’utilisateur doit en être averti ou en avoir le contrôle.
L’une des conditions suivantes doit être remplie :
- l’utilisateur est averti par un texte avant le déclenchement de l’action ;
- le changement de contexte est initié par un bouton dont la fonction est explicite (
<input type="submit" />
,<input type="button" />
,<input type="image" />
,<button />
) ; - le changement de contexte est initié par un lien explicite.
Alertes non sollicitées
7.5 [AAA] Toute alerte non sollicitée (comme par exemple l’apparition d’une fenêtre d’alerte JavaScript) doit être contrôlable par l’utilisateur. L’utilisateur doit disposer d’un moyen lui permettant de fermer cette fenêtre (et de la ré-ouvrir si nécessaire).