Ristiriitainen ARIA-rooli
Silktide tarkistaa eksplisiittisen roolin määrittävät elementit niiden HTML:ssä jo olevan merkityksen perusteella. Se ilmoittaa rooleista, joita ei sallita kyseisellä elementillä, sekä rooleista, jotka vain toistavat elementin jo olemassa olevan merkityksen.
<!-- Ongelma: nav-elementti ei voi olla painike -->
<nav role="button">…</nav>
<!-- Ongelma: tarpeeton, nav-elementillä on jo tämä rooli -->
<nav role="navigation">…</nav>
<!-- Korjaus: anna elementin kertoa itse, mikä se on -->
<nav>…</nav>
Miksi tämä on tärkeää
Jokaisella -elementillä on sisäänrakennettu merkitys, johon luottaa. Tämän merkityksen kanssa ristiriidassa oleva -rooli luo elementin, joka näyttää yhdeltä asialta mutta ilmoittaa olevansa toinen – käyttäjä saattaa kuulla "painike" siitä, mikä on todellisuudessa sivuston navigointi, ja menettää maamerkin, jonka avulla hän löytää tiensä sivulla. Tarpeettomat roolit ovat vähemmän haitallisia, mutta ne lisäävät hälyä, altistavat tuleville virheille ja osoittavat, että ARIAa käytetään silloin, kun sitä ei tarvita.
Näin korjaat sen
- Jos rooli on ristiriitainen, poista rooli tai vaihda elementtiin, jolla todella on haluamasi merkitys – jos sen pitäisi toimia painikkeena, käytä
<button>-elementtiä. - Jos rooli on tarpeeton, kuten
<nav role="navigation">tai<button role="button">, poista role-attribuutti. Elementti välittää roolinsa jo itsessään.
Näin Silktide testaa tämän
- Etsi kaikki sivun elementit, joilla on
role-attribuutti, ja ohita tuntemattomat tai abstraktit roolit (niistä ilmoitetaan tarkistuksessa Virheellinen ARIA-rooli). - Vertaa roolia yhdistelmiin, jotka ARIA in HTML -määritys sallii kyseiselle elementille, ja ilmoita rooleista, joita elementti ei salli.
- Ilmoita rooleista, jotka toistavat elementin oman implisiittisen roolin, lukuun ottamatta
role="list"-roolia<ul>- ja<ol>-elementeissä (katso alla). - Jos role-attribuutissa luetellaan useita rooleja, huomioidaan vain ensimmäinen tunnistettu ARIA-rooli, sama jota selaimet käyttävät. Sitä edeltävät tuntemattomat sanat ohitetaan.
Havainnot erottelevat nämä kaksi tapausta, joten voit priorisoida ristiriidat tarpeettomien roolien edelle.
Vianmääritys
Tarpeeton rooli on käytössä vanhempia selaimia varten
Eksplisiittisiä maamerkkirooleja, kuten role="navigation", suositeltiin aiemmin varmistukseksi vanhaa avustavaa teknologiaa varten. Alkuperäisten elementtien tuki on ollut yleismaailmallista jo vuosia, ja päällekkäisen roolin ylläpito maksaa nyt enemmän kuin siitä on hyötyä. Poista se tai havainto, jos tukikäytäntösi edellyttää sen säilyttämistä.
role="list" -roolia luettelossa ei ilmoiteta
VoiceOveria käyttävä Safari lakkaa ilmoittamasta <ul>- tai <ol>-elementtiä luettelona, kun sen luettelomerkit poistetaan asetuksella list-style: none. role="list"-roolin lisääminen palauttaa luettelon, joten Silktide ei ilmoita sitä tarpeettomaksi näissä elementeissä.