Live-regioner aria-live aria-atomic aria-relevant
Meddela asynkrona uppdateringar till hjälpmedel
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 pausassertive– 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 pausaria-live="assertive"– avbryter omedelbartaria-atomic="true"– läser upp hela områdetrole="alert"= assertive + atomic; role="status" = polite + atomic- Håll live-regioner beständiga; rensa och ange sedan innehållet
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
- aria-expanded och aria-controls för växlingsknappar
- aria-selected och tabbönster
- Live-regioner aria-live aria-atomic aria-relevant
- Testning med skärmläsare