Fehlende ARIA-Kindrolle
Silktide überprüft Container-Widgets, die mit ARIA-Rollen gebaut sind, wie Tab-Leisten, Menüs und Listboxen, und stellt sicher, dass jedes davon die Art von Elementen enthält, die es enthalten soll. Eine Tab-Leiste ohne Tabs oder ein Menü ohne Menüpunkte wird zwar als Widget angekündigt, bietet aber nichts zur Bedienung.
<!-- Problem: Eine tablist muss Elemente mit role="tab" enthalten -->
<div role="tablist">
<button>Übersicht</button>
</div>
<!-- Lösung: Den Kindelementen ihre erforderliche Rolle geben -->
<div role="tablist">
<button role="tab">Übersicht</button>
</div>
Warum das wichtig ist
Zusammengesetzte -Rollen beschreiben ein Widget als Ganzes:
tablist verspricht Tabs, listbox verspricht Optionen, menu verspricht
Menüpunkte. wechseln in eine spezialisierte
Navigation für diese Widgets und erwarten die versprochenen Kindelemente.
Fehlen diesen Elementen ihre Rollen, kündigt sich das Widget an und verhält
sich dann wie eine leere Hülle – Nutzende können es erreichen, finden darin
jedoch nichts, während sehende Nutzende ein vollständig funktionierendes
Steuerelement sehen.
So beheben Sie das Problem
- Fügen Sie jedem Element im Container die erforderliche Rolle hinzu – z. B.
role="tab"für jedes Steuerelement innerhalb einerrole="tablist". - Wenn die Elemente an anderer Stelle im Code stehen müssen, verknüpfen Sie
sie mit
aria-ownsam Container. - Wenn der Container eigentlich kein solches Widget ist, entfernen oder korrigieren Sie stattdessen seine Rolle.
Häufige Zuordnungen: tablist benötigt tab; listbox benötigt option;
menu und menubar benötigen menuitem (oder deren Checkbox- und Radio-Varianten);
radiogroup benötigt radio; tree benötigt treeitem; grid und table
benötigen row; row benötigt Zellen oder Überschriften.
So testet Silktide das
- Alle Elemente finden, deren ARIA-Rolle bestimmte untergeordnete Rollen erfordert.
- In ihren Nachkommen, einschließlich aller mit
aria-ownszugeordneten Elemente, nach mindestens einem Element mit einer erforderlichen Kindrolle suchen. - Container melden, in denen keines gefunden wird.
Fehlerbehebung
Die Elemente werden später per Skript geladen
Silktide testet die Seite beim Laden. Wenn eine Listbox oder ein Menü nur bei Bedarf befüllt wird, wird es bis dahin als leer angekündigt; wo möglich, rendern Sie zumindest die ersten Elemente bereits mit der Seite.
Diese Prüfung meldet nichts, obwohl Sie Ergebnisse erwarten
ARIA-Prüfungen können pro Website deaktiviert werden. Prüfen Sie die erweiterten Einstellungen der Website.