Regioni live: aria-live aria-atomic aria-relevant
Annunciare gli aggiornamenti asincroni alle tecnologie assistive
Regioni live: aria-live aria-atomic aria-relevant è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Che cosa sono le regioni live?
Una regione live è una sezione della pagina il cui contenuto viene aggiornato dinamicamente. I lettori di schermo monitorano le regioni live e annunciano automaticamente le modifiche, senza che l'utente debba spostare il focus.
Creazione di una regione live
Unite aria-live a un elemento contenitore:
<!-- 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>Riepilogo dei valori di aria-live
I tre livelli di aria-live:
off— nessun annuncio (valore predefinito per le regioni non live)polite— annuncia quando l'utente fa una pausa mentre parlaassertive— annuncia immediatamente e interrompe la lettura in corso
aria-atomic in dettaglio
aria-atomic controlla che cosa viene annunciato quando il contenuto cambia:
<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 -->Valori di aria-relevant
aria-relevant specifica quali modifiche al DOM attivano gli annunci:
<!-- 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 -->Ruoli predefiniti delle regioni live
Alcuni ruoli impostano implicitamente 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"
Stato di caricamento con una regione live
Annunciate lo stato di caricamento e quello di completamento:
<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 sull'invio del modulo
Regione live per lo stato di invio del modulo:
<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>Numero dei risultati di ricerca
Annunciate dinamicamente i risultati della ricerca:
<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-pattern delle regioni live
Evitate questi errori nelle regioni live:
- Non create e distruggete le regioni live: rendetele persistenti, con contenuto iniziale vuoto
- Non inserite regioni live all'interno di aree aria-hidden
- Non usate assertive per gli aggiornamenti ordinari: è molto invasivo
- Non annunciate gli aggiornamenti troppo frequentemente (limitate la frequenza dei conteggi dei risultati di ricerca)
Test delle regioni live
Come testare gli annunci delle regioni live:
- Attivate VoiceOver (Mac: Cmd+F5) o NVDA (Windows: Ctrl+Alt+N)
- Attivate l'aggiornamento e ascoltate l'annuncio
- Verificate i tempi: polite attende, assertive interrompe
- Controllate che axe DevTools non segnali problemi nelle regioni live
Verifica rapida
Quale ruolo imposta implicitamente aria-live su assertive e aria-atomic su true?
Riepilogo: regioni live
Elementi essenziali delle regioni live:
aria-live="polite"— attende una pausa dell'utentearia-live="assertive"— interrompe immediatamentearia-atomic="true"— annuncia l'intera regionerole="alert"= assertive + atomic; role="status" = polite + atomic- Mantenete persistenti le regioni live; svuotate il contenuto e poi impostate quello nuovo
Domande Frequenti
La lezione «Regioni live: aria-live aria-atomic aria-relevant» è gratuita?
Sì — il testo completo di «Regioni live: aria-live aria-atomic aria-relevant» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «Regioni live: aria-live aria-atomic aria-relevant»?
Annunciare gli aggiornamenti asincroni alle tecnologie assistive Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Regioni live: aria-live aria-atomic aria-relevant»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- aria-expanded e aria-controls per i toggle
- aria-selected e pattern delle schede
- Regioni live: aria-live aria-atomic aria-relevant
- Test con gli screen reader