Hoppa till innehåll
SilktideHjälp

Obligatoriskt ARIA-attribut saknas

Silktide kontrollerar element som deklarerar en ARIA-roll och verifierar att de också har de attribut som rollen kräver. Vissa roller kan inte användas utan sina attribut, till exempel ett skjutreglage som aldrig anger vilket värde det är inställt på.

<!-- Problem: ett skjutreglage måste exponera sitt aktuella värde -->
<div role="slider" tabindex="0"></div>

<!-- Lösning: ange det obligatoriska tillståndet -->
<div role="slider" tabindex="0"
     aria-valuemin="0" aria-valuemax="100" aria-valuenow="50"></div>

Varför detta är viktigt

Att ge ett element en -roll är ett löfte: "det här är ett skjutreglage", "det här är en kryssruta". Roller som dessa kräver tillståndsattribut, eftersom löftet är tomt utan dem – en användare av en hamnar på en kryssruta och kan inte avgöra om den är markerad, eller på ett skjutreglage och kan inte avgöra dess värde eller intervall. Kontrollen meddelas, kan få fokus men går inte att använda.

Så här åtgärdar du det

  1. Lägg till de attribut som rollen kräver och håll dem uppdaterade med skript när kontrollens tillstånd ändras – ett statiskt aria-checked="false" på en fungerande kryssruta är lika missvisande som att inte ha något attribut alls.
  2. Föredra inbyggda -element där sådana finns: <input type="checkbox"> och <input type="range"> exponerar sitt tillstånd automatiskt, utan ARIA som måste underhållas.

Så testar Silktide detta

  1. Hitta alla element på sidan som deklarerar ett role-attribut.
  2. Slå upp de attribut som ARIA 1.2 kräver för den rollen – till exempel kräver role="checkbox" aria-checked, och role="slider" kräver aria-valuenow.
  3. Hoppa över fall där elementet exponerar tillståndet inbyggt: en riktig kryssruta eller alternativknapp har redan sitt markerade tillstånd, ett inbyggt <option> har sitt valda tillstånd, och ett skjutreglage med aria-valuetext kan utelämna aria-valuenow.
  4. Rapportera varje element som saknar ett obligatoriskt attribut.

Felsökning

Ett skript anger attributet efter att sidan har lästs in

Silktide testar sidan medan den läses in. Om din widget bara lägger till sina tillståndsattribut vid den första interaktionen hör användarna en kontroll utan tillstånd fram till dess – återge i stället det ursprungliga tillståndet på sidan.

Den här kontrollen rapporterar inget trots att jag förväntar mig resultat

ARIA-tester kan stängas av per webbplats. Kontrollera webbplatsens avancerade inställningar.

Läs mer

Senast uppdaterad

Var den här sidan hjälpsam?