HTML Academy · Lektion

Live-regioner aria-live aria-atomic aria-relevant

Meddela asynkrona uppdateringar till hjälpmedel

Lektion 3 av 413 steg

Live-regioner aria-live aria-atomic aria-relevant är en gratis lektion i HTML Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för HTML Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i HTML Academy innehåller totalt 4 lektioner.

Vad är live-regioner?

En live-region är en del av sidan vars innehåll uppdateras dynamiskt. Skärmläsare övervakar live-regioner och läser automatiskt upp ändringar utan att användaren behöver flytta fokus.

Skapa en live-region

Lägg till aria-live på ett behållarelement:

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

Sammanfattning av aria-live-värden

De tre nivåerna för aria-live:

  • off – inga uppläsningar (standard för områden som inte är live-regioner)
  • polite – läses upp när användaren gör paus
  • assertive – läses upp omedelbart och avbryter den pågående uppläsningen

aria-atomic på djupet

aria-atomic styr vad som läses upp när innehållet ändras:

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

Värden för aria-relevant

aria-relevant anger vilka DOM-ändringar som utlöser uppläsningar:

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

Fördefinierade roller för live-regioner

Vissa roller anger implicit 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"

Laddningstillstånd med live-region

Läs upp tillstånd för laddning och slutförande:

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

Återkoppling efter formulärinskickning

Live-region för status efter formulärinskickning:

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

Antal sökresultat

Läs upp sökresultat dynamiskt:

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

Anti-mönster för live-regioner

Undvik dessa misstag med live-regioner:

  • Skapa och ta inte bort live-regioner – gör dem beständiga med tomt initialt innehåll
  • Placera inte live-regioner inuti områden med aria-hidden
  • Använd inte assertive för rutinmässiga uppdateringar – det stör mycket
  • Läs inte upp uppdateringar för ofta (begränsa frekvensen för antal sökresultat)

Testa live-regioner

Så testar du uppläsningar i live-regioner:

  • Aktivera VoiceOver (Mac: Cmd+F5) eller NVDA (Windows: Ctrl+Alt+N)
  • Utlös uppdateringen och lyssna efter uppläsningen
  • Kontrollera tajmingen: polite väntar, assertive avbryter
  • Kontrollera att axe DevTools inte rapporterar problem med live-regioner

Snabbkontroll

Vilken roll anger implicit aria-live assertive och aria-atomic true?

Sammanfattning: live-regioner

Det viktigaste om live-regioner:

  • aria-live="polite" – väntar tills användaren gör paus
  • aria-live="assertive" – avbryter omedelbart
  • aria-atomic="true" – läser upp hela området
  • role="alert" = assertive + atomic; role="status" = polite + atomic
  • Håll live-regioner beständiga; rensa och ange sedan innehållet
Gratis att börja

Lär dig HTML med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
40
Lektioner
159

Vanliga frågor

Är lektionen ”Live-regioner aria-live aria-atomic aria-relevant” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen HTML Academy, inklusive ”Live-regioner aria-live aria-atomic aria-relevant”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i HTML Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Live-regioner aria-live aria-atomic aria-relevant”?

Meddela asynkrona uppdateringar till hjälpmedel Ni övar på HTML Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig HTML Academy?

Du behöver inga förkunskaper. Utbildningen i HTML Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Live-regioner aria-live aria-atomic aria-relevant”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här HTML Academy-lektionen?

Ja. Varje HTML Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. aria-expanded och aria-controls för växlingsknappar
  2. aria-selected och tabbönster
  3. Live-regioner aria-live aria-atomic aria-relevant
  4. Testning med skärmläsare
← Tillbaka till HTML Academy