Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant`
Annoncez les mises à jour asynchrones aux technologies d’assistance.
Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant` est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Que sont les régions dynamiques ?
Une région dynamique est une section de la page dont le contenu est mis à jour dynamiquement. Les lecteurs d’écran surveillent les régions dynamiques et annoncent automatiquement les modifications sans que l’utilisateur déplace le focus.
Créer une région dynamique
Ajoutez aria-live à un élément conteneur :
<!-- Polite: announce when user is idle -->
<div aria-live="polite" id="notifications"></div>
<!-- Inject text to announce: -->
<script>
document.getElementById('notifications').textContent = '5 new messages';
// Screen reader announces: '5 new messages' when user pauses
</script>Récapitulatif des valeurs de aria-live
Les trois niveaux de aria-live :
off— aucune annonce (valeur par défaut pour les régions qui ne sont pas dynamiques)polite— annonce la modification lorsque l’utilisateur fait une pause dans sa lectureassertive— annonce immédiatement la modification et interrompt la lecture en cours
aria-atomic en détail
aria-atomic détermine ce qui est annoncé lorsque le contenu est modifié :
<div aria-live="polite" aria-atomic="false"> <!-- default -->
Items in cart: <span id="count">3</span>
</div>
<!-- Only the changed span is announced: '4' -->
<div aria-live="polite" aria-atomic="true">
Items in cart: <span id="count">3</span>
</div>
<!-- The entire div is announced: 'Items in cart: 4' -->
<!-- aria-atomic="true" gives more context but is more verbose -->Valeurs de aria-relevant
aria-relevant indique quelles modifications du DOM déclenchent des annonces :
<!-- Default: additions text -->
<div aria-live="polite" aria-relevant="additions text">
<!-- Announce removals too: -->
<div aria-live="polite" aria-relevant="removals">
<!-- Announce everything: -->
<div aria-live="polite" aria-relevant="all">
<!-- Values: additions, removals, text, all
'additions' = added nodes announced
'removals' = removed nodes announced
'text' = text content changes announced -->Rôles prédéfinis des régions dynamiques
Certains rôles définissent implicitement aria-live :
role="alert"— aria-live="assertive" + aria-atomic="true"role="status"— aria-live="polite" + aria-atomic="true"role="log"— aria-live="polite"role="timer"— aria-live="off"role="marquee"— aria-live="off"
État de chargement avec une région dynamique
Annoncez les états de chargement et de fin :
<div role="status" aria-live="polite" aria-atomic="true" id="load-status">
<!-- empty initially -->
</div>
<script>
async function loadData() {
document.getElementById('load-status').textContent = 'Loading...';
const data = await fetchData();
renderResults(data);
document.getElementById('load-status').textContent =
`${data.length} results loaded.`;
}
</script>Retour après soumission du formulaire
Région dynamique pour l’état de soumission du formulaire :
<form id="contact-form" novalidate>
<input type="email" name="email">
<button type="submit">Subscribe</button>
</form>
<div role="status" aria-live="polite" id="form-status"></div>
<script>
form.addEventListener('submit', async (e) => {
e.preventDefault();
const status = document.getElementById('form-status');
status.textContent = 'Submitting...';
await submitForm(new FormData(form));
status.textContent = 'Thank you! You are now subscribed.';
});
</script>Nombre de résultats de recherche
Annoncez dynamiquement les résultats de recherche :
<label for="search">Search</label>
<input type="search" id="search">
<div role="status" aria-live="polite" aria-atomic="true" id="results-count"></div>
<div id="results"></div>
<script>
let debounceTimer;
search.addEventListener('input', () => {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(() => {
const results = filterResults(search.value);
renderResults(results);
document.getElementById('results-count').textContent =
`${results.length} results for "${search.value}"`;
}, 300);
});
</script>Pratiques à éviter pour les régions dynamiques
Évitez ces erreurs concernant les régions dynamiques :
- Ne créez ni ne supprimez les régions dynamiques — rendez-les persistantes avec un contenu initial vide
- Ne placez pas de régions dynamiques dans des zones aria-hidden
- N’utilisez pas assertive pour les mises à jour courantes — cette valeur est très perturbante
- N’annoncez pas les mises à jour trop fréquemment (limitez la fréquence d’affichage du nombre de résultats de recherche)
Tester les régions dynamiques
Comment tester les annonces des régions dynamiques :
- Activez VoiceOver (Mac : Cmd+F5) ou NVDA (Windows : Ctrl+Alt+N)
- Déclenchez la mise à jour et écoutez l’annonce
- Vérifiez le moment de l’annonce : polite attend, assertive interrompt
- Vérifiez qu’axe DevTools ne signale aucun problème lié aux régions dynamiques
Vérification rapide
Quel rôle définit implicitement aria-live sur assertive et aria-atomic sur true ?
Récapitulatif : régions dynamiques
Éléments essentiels des régions dynamiques :
aria-live="polite"— attendre que l’utilisateur fasse une pausearia-live="assertive"— interrompre immédiatementaria-atomic="true"— annoncer toute la régionrole="alert"= assertive + atomic ; role="status" = polite + atomic- Conservez les régions dynamiques ; videz leur contenu, puis définissez-le
Questions Fréquemment Posées
La leçon « Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant` » est-elle gratuite ?
Oui — le texte complet de « Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant` » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant` » ?
Annoncez les mises à jour asynchrones aux technologies d’assistance. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant` » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- `aria-expanded` et `aria-controls` pour les bascules
- `aria-selected` et modèles d’onglets
- Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant`
- Tests avec des lecteurs d’écran