Conflicterende ARIA-rol
Silktide controleert elementen die een expliciete rol declareren aan de hand van de betekenis die ze al in HTML hebben. Het rapporteert rollen die niet zijn toegestaan voor dat element en rollen die alleen maar herhalen wat het element al betekent.
<!-- Probleem: een nav-element kan geen button zijn -->
<nav role="button">…</nav>
<!-- Probleem: overbodig, nav heeft deze rol al -->
<nav role="navigation">…</nav>
<!-- Oplossing: laat het element voor zichzelf spreken -->
<nav>…</nav>
Waarom dit belangrijk is
Elk -element heeft een ingebouwde betekenis waarop vertrouwt. Een -rol die in strijd is met die betekenis creëert een element dat eruitziet als het ene, maar zichzelf aankondigt als het andere - een -gebruiker kan bijvoorbeeld "link" horen bij iets dat zich als een knop gedraagt, met sneltoetsen en verwachtingen die niet langer overeenkomen. Overbodige rollen zijn minder schadelijk, maar voegen ruis toe, zetten aan tot toekomstige fouten en geven aan dat ARIA wordt gebruikt waar dat niet nodig is.
Zo los je het op
- Verwijder bij een conflicterende rol de rol of schakel over naar een element
dat daadwerkelijk de gewenste betekenis heeft - als het zich als een
knop moet gedragen, gebruik dan
<button>. - Verwijder bij een overbodige rol, zoals
<nav role="navigation">of<button role="button">, het role-attribuut. Het element stelt die rol zelf al beschikbaar.
Hoe Silktide dit controleert
- Zoek elk element op de pagina met een
role-attribuut, waarbij rollen die onbekend of abstract zijn worden overgeslagen (die worden gemeld door Ongeldige ARIA-rol). - Vergelijk de rol met de combinaties die de specificatie ARIA in HTML voor dat element toestaat en rapporteer rollen die het element niet toestaat.
- Rapporteer rollen die de eigen impliciete rol van het element dupliceren.
- Wanneer een role-attribuut meerdere rollen bevat, wordt alleen de eerste in aanmerking genomen.
In de bevindingen wordt onderscheid gemaakt tussen de twee gevallen, zodat je conflicten boven overbodigheid kunt prioriteren.
Problemen oplossen
De overbodige rol is er voor oudere browsers
Expliciete landmarkrollen zoals role="navigation" werden ooit aanbevolen als
vangnet voor oude hulptechnologie. Ondersteuning voor de native elementen
is al jaren universeel en de gedupliceerde rol kost nu meer in
onderhoud dan deze oplevert. Verwijder de rol of
de bevinding goed als je ondersteuningsbeleid
vereist dat je de rol behoudt.
Deze controle rapporteert niets, hoewel ik bevindingen verwacht
ARIA-controles kunnen per website worden uitgeschakeld. Controleer de geavanceerde instellingen voor de website.