0Pricing
HTML Academy · Leçon

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 lecture
  • assertive — 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 pause
  • aria-live="assertive" — interrompre immédiatement
  • aria-atomic="true" — annoncer toute la région
  • role="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

  1. `aria-expanded` et `aria-controls` pour les bascules
  2. `aria-selected` et modèles d’onglets
  3. Régions dynamiques : `aria-live`, `aria-atomic`, `aria-relevant`
  4. Tests avec des lecteurs d’écran
← Retour à HTML Academy