HTML Academy · Les

Livegebieden: aria-live aria-atomic aria-relevant

Kondig asynchrone updates aan bij ondersteunende technologie

Les 3 van 413 stappen

Livegebieden: aria-live aria-atomic aria-relevant is een gratis HTML Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject HTML Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus HTML Academy bevat in totaal 4 lessen.

Wat zijn livegebieden?

Een livegebied is een gedeelte van de pagina waarvan de inhoud dynamisch wordt bijgewerkt. Schermlezers houden livegebieden in de gaten en kondigen wijzigingen automatisch aan zonder dat de gebruiker de focus hoeft te verplaatsen.

Een livegebied maken

Voeg aria-live toe aan een containerelement:

<!-- 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>

Samenvatting van de waarden van aria-live

De drie niveaus van aria-live:

  • off — geen aankondigingen (standaard voor niet-livegebieden)
  • polite — kondigt aan wanneer de gebruiker pauzeert met spreken
  • assertive — kondigt onmiddellijk aan en onderbreekt de huidige spraak

aria-atomic uitgediept

aria-atomic bepaalt wat er wordt aangekondigd wanneer de inhoud wijzigt:

<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 -->

Waarden van aria-relevant

aria-relevant geeft aan welke DOM-wijzigingen aankondigingen activeren:

<!-- 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 -->

Vooraf gedefinieerde rollen voor livegebieden

Sommige rollen stellen aria-live impliciet in:

  • 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"

Laadstatus met een livegebied

Kondig laad- en voltooiingsstatussen aan:

<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>

Feedback bij het verzenden van formulieren

Livegebied voor de status van het verzenden van een formulier:

<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>

Aantal zoekresultaten

Kondig zoekresultaten dynamisch aan:

<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>

Antipatronen voor livegebieden

Vermijd deze fouten met livegebieden:

  • Maak livegebieden niet aan en verwijder ze niet — maak ze blijvend met lege begininhoud
  • Plaats livegebieden niet binnen aria-hidden-gebieden
  • Gebruik assertive niet voor routine-updates — dat is zeer verstorend
  • Kondig updates niet te vaak aan (beperk de frequentie van aantallen zoekresultaten)

Livegebieden testen

Livegebiedaankondigingen testen:

  • Schakel VoiceOver in (Mac: Cmd+F5) of NVDA (Windows: Ctrl+Alt+N)
  • Activeer de update en luister naar de aankondiging
  • Controleer de timing: polite wacht, assertive onderbreekt
  • Controleer of axe DevTools geen problemen met livegebieden markeert

Korte controle

Welke rol stelt aria-live impliciet in op assertive en aria-atomic op true?

Samenvatting: livegebieden

Essentiële punten over livegebieden:

  • aria-live="polite" — wacht tot de gebruiker pauzeert
  • aria-live="assertive" — onderbreekt onmiddellijk
  • aria-atomic="true" — kondigt het hele gebied aan
  • role="alert" = assertive + atomic; role="status" = polite + atomic
  • Houd livegebieden blijvend; maak de inhoud leeg en stel deze daarna in
Gratis beginnen

Leer HTML met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “Livegebieden: aria-live aria-atomic aria-relevant” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad HTML Academy, waaronder “Livegebieden: aria-live aria-atomic aria-relevant”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus HTML Academy bevat in totaal 4 lessen.

Wat leer ik in “Livegebieden: aria-live aria-atomic aria-relevant”?

Kondig asynchrone updates aan bij ondersteunende technologie Je oefent met HTML Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met HTML Academy te beginnen?

Ervaring vooraf is niet nodig. HTML Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Livegebieden: aria-live aria-atomic aria-relevant”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over HTML Academy?

Ja. Elke les over HTML Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. aria-expanded en aria-controls voor schakelaars
  2. aria-selected en tabpatronen
  3. Livegebieden: aria-live aria-atomic aria-relevant
  4. Testen met schermlezers
← Terug naar HTML Academy