aria-atomic
Controlla se la tecnologia assistiva annuncia l'intero contenuto di una live region all'aggiornamento oppure solo la parte modificata. Il valore predefinito è "false" (solo la differenza). Si imposta "true" quando il contesto ha senso solo come frase completa.
Quando usarlo
Su una live region i cui aggiornamenti hanno senso solo se letti come un’unità completa. L’esempio classico è uno stato su riga singola come «3 risultati trovati»: se la live region è aria-atomic="false" (valore predefinito) e cambia solo il numero, lo screen reader potrebbe annunciare soltanto «3», privo di contesto. Con aria-atomic="true", viene annunciata l’intera frase.
Si imposti aria-atomic="false" (o si ometta) quando:
- La regione è un registro o un pannello di chat in cui ogni nuova riga è autonoma — «Alice: ciao», «Bob: salve». Rileggere l’intero registro ad ogni aggiornamento sarebbe insopportabile.
- Solo il nuovo contenuto porta la nuova informazione.
Si imposti aria-atomic="true" quando:
- La regione è una frase breve e stabile il cui significato dipende dalle parole vicine — «Totale carrello: 42,18 €», «Pagina 3 di 12», «Filtri applicati: 2».
- Una piccola modifica nel DOM all’interno della regione ha scarso significato da sola.
aria-atomic è indipendente da aria-live e aria-busy. Funzionano insieme ma regolano aspetti diversi.
Come mantenerlo sincronizzato
I valori validi sono "true" e "false". Il valore predefinito è "false".
L’attributo va impostato una sola volta sulla live region e lasciato invariato — è una proprietà del modo in cui la regione deve essere annunciata, non uno stato che cambia nel tempo. Viene inoltre ereditato: applicare aria-atomic="true" a un elemento padre rende atomiche le live region discendenti, salvo override esplicito.
Se la strategia di aggiornamento è «sostituire l’intero testo della regione», aria-atomic="true" produce l’annuncio più naturale. Se la strategia è «aggiungere una nuova riga», di solito si preferisce aria-atomic="false" affinché venga letta solo la riga aggiunta.
Errori comuni
- Lasciare
aria-atomical suo valore predefinito su uno stato stabile a riga singola, e sentire annunciare solo «5» invece di «5 risultati trovati». - Impostare
aria-atomic="true"su un registro di chat — ogni nuovo messaggio causa la rilettura dell’intero registro. - Aggiornare solo un
<span>all’interno di una regione atomica e restare sorpresi che venga annunciato anche il testo circostante. È esattamente il significato di «atomico». - Usare
aria-atomicsu una regione priva diaria-livee di un ruolo live implicito — l’attributo non ha effetto. - Impostare
aria-atomicsu un controllo con focus. Gli attributi delle live region appartengono ai contenitori di stato, non agli elementi interattivi.
Esempio
<!-- Atomico: l'intera frase è il messaggio -->
<p aria-live="polite" aria-atomic="true">
Totale carrello: <span id="cart-total">0,00 €</span>
</p>
<!-- Non atomico: viene annunciata solo la nuova riga -->
<ul aria-live="polite" aria-atomic="false" id="chat-log">
<li>Alice: ciao</li>
</ul>