Consulter l’article dédié : Live regions ARIA : comment garantir leur restitution par les lecteurs d’écran ?
Description des tests
Dans cette page, nous testons la restitution d'un message affiché avec la propriété CSS display lorsqu'on actionne un bouton.
Nous testons deux exemples :
- Affichage du contenu dans une live region déjà visible (mais vide)
- Affichage de la live region et de son contenu simultanément
Pour chaque exemple, la restitution est testée pour les rôles alert, status et log ainsi que pour leur équivalent avec les propriétés aria-live et aria-atomic,
comme détaillé dans le tableau suivant.
Valeur pour aria-live |
Valeur pour aria-atomic |
|
|---|---|---|
role="alert" |
assertive |
true |
role="status" |
polite |
true |
role="log" |
polite |
false (défaut) |
Versions utilisées des lecteurs d'écrans et navigateurs :
Bureau :
- JAWS 2024 / Firefox 122.0.1
- JAWS 2024 / Chrome 121
- JAWS 2024 / Edge 121
- NVDA 2023.3.3 / Firefox 122.0.1
- NVDA 2023.3.3 / Chrome 121
- VoiceOver / Safari / macOS Sonoma 14
Mobile :
- Safari / VoiceOver / IOS 17.3.1
- Chrome 121 / Talkback 14.1
Exemple 1 : la live region existe dans le DOM au chargement de la page
Avec cette méthode, la live region existe dans le DOM au chargement de la page.
La propriété CSS display:none est définie sur son contenu, et passe à true afin de déclencher l'apparition du message de statut.
Remarque :
Dans les exemples ci-dessous, la propriété display est définie au moyen d'un style en ligne directement dans la balise <p> mais le résultat est identique si on la définit dans une feuille de style interne ou externe.
Code
Exemple de code au chargement de la page, avec un rôle alert :
<!-- Live regions -->
<div role="alert">
<p style="display:none;">Message de test</p>
</div>
Et l'équivalent avec les propriétés aria-live et aria-atomic :
<!-- Live regions -->
<div aria-live="assertive" aria-atomic="true">
<p style="display:none;">Message de test</p>
</div>
Le code généré après l'action utilisateur, avec un rôle alert :
<!-- Live regions -->
<div role="alert">
<p style="display:block;">Message de test</p>
</div>
Et l'équivalent avec les propriétés aria-live et aria-atomic :
<!-- Live regions -->
<div aria-live="assertive" aria-atomic="true">
<p style="display:block;">Message de test</p>
</div>
Démo
Résultats des tests de restitution
Les cellules marquées d'un V signifient que le message est bien restitué.
Les cellules marquées d'une croix signifient que le message n'est pas restitué.
| Type "alert" | Type "status" | Type "log" | ||||
|---|---|---|---|---|---|---|
avec role |
avec aria-live |
avec role |
avec aria-live |
avec role |
avec aria-live |
|
| JAWS/Firefox | restitution conforme | restitution non conforme | restitution conforme | restitution non conforme | restitution conforme | restitution conforme |
| JAWS/Chrome | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| JAWS/Edge | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| NVDA/Firefox | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| NVDA/Chrome | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| VoiceOver macOS/Safari | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| Talkback/Chrome | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| VoiceOver IOS/Safari | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
Exemple 2 : la live region n'existe pas dans le DOM au chargement de la page
Avec cette méthode, la propriété CSS display:none est définie sur la live region elle-même, ce qui l'exclut du DOM.
Elle n'y est insérée qu'au moment ou la valeur de display passe à true afin de déclencher l'apparition du message de statut.
Remarque :
Dans les exemples ci-dessous, la propriété display est définie au moyen d'un style en ligne directement dans la balise <div> mais le résultat est identique si on la définit dans une feuille de style interne ou externe.
Code
Exemple de code au chargement de la page, avec un rôle alert :
<!-- Live regions -->
<div role="alert" style="display:none;">
<p>Message de test</p>
</div>
Et l'équivalent avec les propriétés aria-live et aria-atomic :
<!-- Live regions -->
<div aria-live="assertive" aria-atomic="true" style="display:none;">
<p>Message de test</p>
</div>
Le code généré après l'action utilisateur, avec un rôle alert :
<!-- Live regions -->
<div role="alert" style="display:block;">
<p>Message de test</p>
</div>
Et l'équivalent avec les propriétés aria-live et aria-atomic :
<!-- Live regions -->
<div aria-live="assertive" aria-atomic="true" style="display:block;">
<p>Message de test</p>
</div>
Démo
Résultats des tests de restitution
Les cellules marquées d'un V signifient que le message est bien restitué.
Les cellules marquées d'une croix signifient que le message n'est pas restitué.
| Type "alert" | Type "status" | Type "log" | ||||
|---|---|---|---|---|---|---|
avec role |
avec aria-live |
avec role |
avec aria-live |
avec role |
avec aria-live |
|
| JAWS/Firefox | restitution conforme | restitution non conforme | restitution conforme | restitution non conforme | restitution conforme | restitution conforme |
| JAWS/Chrome | restitution conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme |
| JAWS/Edge | restitution conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme |
| NVDA/Firefox | restitution conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme |
| NVDA/Chrome | restitution conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme | restitution non conforme |
| VoiceOver macOS/Safari | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| Talkback/Chrome | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |
| VoiceOver IOS/Safari | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme | restitution conforme |