Puuttuva ARIA-lapsirooli
Silktide tarkistaa ARIA-rooleilla toteutetut säilöwidgetit, kuten välilehtirivit, valikot ja luetteloruutuja, ja varmistaa, että kukin niistä sisältää sellaisia kohteita, joita sen on tarkoitus sisältää. Välilehtirivi ilman välilehtiä tai valikko ilman valikkokohteita ilmoitetaan widgetinä, mutta se ei tarjoa mitään käytettävää.
<!-- Ongelma: tablistin on sisällettävä elementtejä, joiden role="tab" -->
<div role="tablist">
<button>Yleiskatsaus</button>
</div>
<!-- Korjaus: anna lapsielementeille niiden vaadittu rooli -->
<div role="tablist">
<button role="tab">Yleiskatsaus</button>
</div>
Miksi tämä on tärkeää
Yhdistetyt -roolit kuvaavat widgetiä kokonaisuutena:
tablist lupaa välilehtiä, listbox vaihtoehtoja ja menu valikkokohteita.
siirtyvät näille widgeteille
erikoistuneeseen navigointiin ja odottavat luvattuja lapsielementtejä.
Kun lapsielementeiltä puuttuvat niiden roolit, widget ilmoittaa itsestään ja
käyttäytyy sitten tyhjänä kuorena – käyttäjät voivat siirtyä siihen, mutta eivät
löydä sen sisältä mitään, kun taas näkevät käyttäjät näkevät täysin toimivan
hallintaelementin.
Näin korjaat sen
- Lisää vaadittu rooli jokaiseen säilön sisällä olevaan kohteeseen – esimerkiksi
role="tab"jokaiseenrole="tablist"-elementin sisällä olevaan hallintaelementtiin. - Jos kohteiden on oltava muualla koodissa, yhdistä ne säilöön käyttämällä
säilössä
aria-owns-attribuuttia. - Jos säilö ei todellisuudessa ole kyseisenlainen widget, poista tai korjaa sen rooli.
Yleiset parit: tablist tarvitsee tab-elementin; listbox tarvitsee
option-elementin; menu ja menubar tarvitsevat menuitem-elementin
(tai sen valintaruutu- ja valintanappimuunnelmat); radiogroup tarvitsee
radio-elementin; tree tarvitsee treeitem-elementin; grid ja table
tarvitsevat row-elementin; row tarvitsee soluja tai otsikoita.
Näin Silktide testaa tämän
- Etsi jokainen elementti, jonka ARIA-rooli edellyttää tiettyjä lapsirooleja.
- Ohita säilöt, joissa on
aria-busy="true", koska niiden kohteita ladataan yhä. - Etsi jokaisen jäljellä olevan säilön jälkeläiselementeistä, mukaan lukien
aria-owns-attribuutilla liitetyt elementit, vähintään yksi elementti, jolla on vaadittu lapsirooli. Natiivielementit huomioidaan niiden implisiittisen roolin mukaisesti: taulukkorivin (<tr>) vaatimukset täyttyvät sen<td>- ja<th>-soluilla. - Raportoi säilöt, joista ei löydy yhtäkään tällaista elementtiä.
Vianmääritys
Kohteet ladataan myöhemmin komentosarjalla
Silktide testaa sivun sen latautuessa. Jos luetteloruutu tai valikko täytetään
vain tarvittaessa, se ilmoitetaan siihen asti tyhjänä; renderöi mahdollisuuksien
mukaan ainakin ensimmäiset kohteet sivun mukana. Kun säilön kohteita ladataan
vielä, merkitse se aria-busy="true"-attribuutilla ja poista attribuutti, kun
kohteet ovat paikoillaan. Silktide ei raportoi varatuksi merkittyä säilöä.