aria-prohibited-attr

ARIA-Benennungsattribute dürfen nicht auf Rollen verwendet werden, die sie verbieten

automaticWCAG 4.1.2 (A)Konfidenz: highSchweregrad: moderaterobust

Prüft, dass aria-label/aria-labelledby nicht auf WAI-ARIA-Rollen vorkommen, deren Spezifikation eine Benennung per ARIA ausdrücklich verbietet (z. B. generic, emphasis, strong, paragraph).

Anwendbarkeit. Gilt für (a) Elemente, deren explizite, gültige Rolle eine der ARIA-1.2-Rollen mit einer dokumentierten Liste „Prohibited ARIA States and Properties“ für Benennungsattribute ist (reine Textsemantik- bzw. nicht benennende Strukturrollen: caption, code, deletion, emphasis, generic, insertion, mark, none, paragraph, presentation, strong, subscript, suggestion, superscript, time), dazu ein natives <caption> ohne gültige explizite Rolle, dessen implizite Rolle caption ist, und (b) Elemente ganz ohne Rolle: native HTML-Tags, für die geprüft ist, dass sie keine implizite Rolle haben (etwa <div>, <span>, <p>, <strong>, <em>, <code> und <time>), oder jedes autonome Custom Element (ein vom Autor definierter Tag mit Bindestrich gemäß Custom-Elements-Spezifikation). In beiden Fällen nur Elemente, die zusätzlich aria-label oder aria-labelledby tragen. Ein Custom Element, dem seine ElementInternals eine Rolle geben (this.attachInternals().role), wird anhand dieser Rolle, seiner Standardrolle, beurteilt: Mit einer der oben genannten Rollen fällt es unter (a), mit jeder anderen nicht unter (b).

Erwartung. Verbotene Attribute dürfen bei (a) nicht vorhanden sein; bei (b) ist das Benennungsattribut bestenfalls unzuverlässig (es gibt nichts, das einen zugänglichen Namen auswertet und an dem es hängen könnte) und schlimmstenfalls wird es von assistiven Technologien stillschweigend ignoriert. Ein Element ohne Rolle, dessen eigener Inhalt ihm bereits einen Namen gibt, wird als cantTell gemeldet, da das Attribut ein bewusster Override sein kann; eines ohne andere Quelle für einen Namen ergibt fail.

Was ein Befund meldet.

  • attr: das gefundene Benennungsattribut, aria-label oder aria-labelledby.
  • role: die Rolle, die es verbietet; null bei einem Element ohne Rolle.

Diese Felder in data.details helfen, einen Befund zu lesen und zu reproduzieren. Außer reasonCode und den wenigen Feldern, die Ausgabeschema als stabil nennt, sind sie kein stabiler Vertrag: Ein Feld kann in einer Minor-Version umbenannt werden oder wegfallen, bauen Sie also nicht darauf auf.

Beispiele

pass
<div role="generic"></div>

role="generic" kann nicht benannt werden, und keines der Benennungsattribute ist vorhanden.

fail
<div role="generic" aria-label="Something"></div>

aria-label ist auf einer Rolle gesetzt, deren Benennung WAI-ARIA verbietet.

So prüfen Sie es

Wenn diese Regel nicht entscheiden kann, meldet sie cantTell und überlässt die Frage einer Person. Jede Frage, die sie stellen kann, steht hier unter ihrem Reason-Code, mit den Schritten, um sie zu beantworten. Ein Befund enthält dieselben Schritte in howToCheck, in der Sprache des Scans. Siehe Ausgabeschema.

ARIA_ATTR_PROHIBITED_ROLELESS_NEEDS_REVIEW

  1. Untersuchen Sie das im Bericht genannte Element und notieren Sie den Text seines aria-label oder aria-labelledby und seinen sichtbaren Text.
  2. Vergleichen Sie beide: Prüfen Sie, ob das Label etwas sagt, was der sichtbare Text nicht sagt.
  3. Wenn ja, prüfen Sie, ob diese Information auf anderem Weg gegeben wird, den ein Screenreader ebenfalls vorliest, etwa eine Tabellenüberschrift über der Zelle oder Text neben dem Element.
  4. Lesen Sie das Element mit einem Screenreader im Lesemodus und notieren Sie, ob das Label angesagt oder ignoriert wird.

Bestanden. Der sichtbare Text oder Text, den ein Screenreader mit ihm vorliest, etwa seine Tabellenüberschrift, sagt bereits alles, was die Beschriftung sagt; es geht also nichts verloren, wenn sie ignoriert wird.

Nicht bestanden. Die Beschriftung trägt eine Information, die nirgends sonst steht (etwa „Preis in Euro“ an „12“ ohne Überschrift, die es sagt), und geht verloren, weil ein Element ohne Rolle keine Benennung unterstützt (WCAG 4.1.2, ACT kb1m8s).

Verwandte Regeln

Quellcode ansehen