Live-alue
Katso myös: aria-live, ARIA live region
ARIA-hallittu alue, joka ilmoittaa dynaamisen sisällön muutokset ruudunlukuohjelmille ilman kohdistuksen siirtämistä. `aria-live`-attribuutti tekee DOM:n osasta `polite`- tai `assertive`-tilan saavutettavuuspuun ilmoituksia varten.
Live-alue on osa DOM:ia, joka — kun sen sisältö muuttuu — ilmoitetaan ruudunlukuohjelman käyttäjille automaattisesti ilman kohdistuksen siirtämistä, ilman että käyttäjää vaaditaan navigoimaan siihen, eikä heidän tarvitse päivittää sivua.
Live-alueet ovat mekanismi jokaisen “Toast: Tuote lisätty ostoskoriin” -ilmoituksen, jokaisen lomakevalidoinnin “Virhe: Sähköposti vaaditaan” -viestin ja jokaisen hakutulosmäärän päivityksen takana, jonka ruudunlukuohjelman käyttäjä tosiasiassa kuulee.
Perusattribuutti
Yksinkertaisin live-alue on div-elementti, jolla on aria-live="polite":
<div aria-live="polite" id="status">
<!-- tänne lisätty sisältö ilmoitetaan muuttuessaan -->
</div>
Kun JavaScript lisää tekstiä #status-elementtiin, ruudunlukuohjelma ilmoittaa uuden tekstin seuraavassa luonnollisessa tauossa — keskeyttämättä mitä käyttäjä sillä hetkellä lukee.
Polite ja assertive
aria-live-attribuutilla on kaksi toiminnallista arvoa:
polite— odota kunnes käyttäjä on jouten, sitten ilmoita. Käytä useimmissa ilmoituksissa: vahvistukset, hakumäärät, tilaviestit.assertive— keskeytä käyttäjän nykyinen lukeminen ja ilmoita välittömästi. Käytä vain aidosti kiireellisiin viesteihin: kriittiset virheet, istunnon vanhenemisvaroitukset, aikarajoitteiset hälytykset.
Runsas assertive-käyttö on yksittäinen yleisin live-alueen virhekuvio. Jokainen pienikin toast-ilmoitus assertive-tilassa tekee ruudunlukuohjelmasta jatkuvan keskeyttäjän, ja käyttäjä oppii poistamaan live-alueen käytöstä kokonaan.
ARIA-johdetut vaihtoehdot
Useat ARIA-roolit sisältävät aria-live-toiminnallisuuden automaattisesti:
role="alert"→ toimii kutenaria-live="assertive".role="status"→ toimii kutenaria-live="polite".role="log"→ polite-tila, käsitteellisellä vihjeellä vain-lisäys-lokista (chat-historia, konsolin tulosteet).role="timer"→ polite-tila, lähtölaskureille.
Roolin valinta on usein selkeämpää kuin aria-live-arvon suora valinta — se dokumentoi alueen tarkoituksen.
Mitä käytännössä menee pieleen
- Live-alue lisätään samaan aikaan sisällön kanssa. ARIA ilmoittaa vain muutokset live-alueisiin, jotka jo olivat DOM:ssa.
<div aria-live="polite">Ladattu</div>lisääminen yhtenä lohkona ei ilmoita — alue ja sisältö saapuivat yhdessä. Korjaus: pidä tyhjä live-alue DOM:ssa sivun latauksesta lähtien, täytä se myöhemmin. - Liian nopeat päivitykset. Tekstin lisääminen live-alueeseen useita kertoja sekunnissa tyhjentää edellisen ilmoituksen ennen kuin se valmistuu. Käyttäjä kuulee katkelmia. Rajoita tai viivästä (debounce) päivityksiä.
- Modaalinhallitut ilmoitukset, joissa pitäisi käyttää kohdistusta. Jos käyttäjän tahallinen toiminta laukaisi viestin, kohdistuksen siirtäminen viestiin (tai siihen liittyvään ohjaimeen) on usein parempi kuin live-alueen ilmoitukseen luottaminen. Live-alueet ovat passiivisia ilmoituksia varten.
- Koristeellinen kohina live-alueella. Live-alue, joka sisältää latausspinnereitä, kuvakkeita ja aikaleimoja viestin lisäksi, saa ruudunlukuohjelman lukemaan kaiken jokaisen päivityksen yhteydessä. Pidä alueen sisältö vain viestissä.