aria-allowed-attr
aria-*-Attribute müssen für die Rolle des Elements zulässig sein
Prüft, dass jedes bekannte aria-*-Attribut auf einem Element mit expliziter Rolle entweder global unterstützt wird oder von dieser Rolle unterstützt wird.
Anwendbarkeit. Gilt für Elemente mit mindestens einem bekannten, nicht globalen aria-*-Attribut, beurteilt anhand der Rolle, die sie tatsächlich haben: einer expliziten gültigen Rolle, andernfalls der impliziten Rolle ihres Tags, andernfalls – bei Elementen, denen HTML-AAM überhaupt keine Rolle zuordnet – keiner. Ein Custom Element ohne role-Attribut, das eine Rolle nennt, wird anhand der Rolle beurteilt, die ihm seine ElementInternals geben (this.attachInternals().role), seiner Standardrolle, so wie ein natives Element anhand der Rolle seines Tags beurteilt wird.
Erwartung. Jedes vorhandene bekannte aria-*-Attribut ist entweder: (a) auf jedem Element global unterstützt (die „globalen“ ARIA-Zustände/-Eigenschaften, z. B. aria-label/aria-hidden/aria-describedby), oder (b) ausdrücklich als erforderlicher oder unterstützter Zustand bzw. als erforderliche oder unterstützte Eigenschaft für die Rolle des Elements aufgeführt. Ein Attribut, das ARIA für die Rolle als veraltet (statt als verboten) kennzeichnet, ist weiterhin erlaubt: Es wird als CANTTELL gemeldet, damit der Autor entscheidet, nicht als unzulässiges FAIL. Dasselbe gilt für ein Element ohne Rolle: Ein Attribut, das seit ARIA 1.2 nicht mehr global ist (aria-disabled, aria-errormessage, aria-haspopup, aria-invalid), ist dort ebenfalls CANTTELL.
Was ein Befund meldet.
attr: das aria-*-Attribut, das am Element nicht erlaubt oder veraltet ist.role(ein Element mit Rolle): die Rolle, an der es gemessen wurde, explizit oder implizit. Fehlt, wenn das Element überhaupt keine Rolle hat.
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
<div role="checkbox" aria-checked="true"></div>
aria-checked gehört zu den Zuständen, die role="checkbox" unterstützt.
<div role="checkbox" aria-valuenow="1"></div>
aria-valuenow gehört zu Bereichs-Widgets, nicht zu role="checkbox".
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_DEPRECATED
- Untersuchen Sie das im Bericht genannte Element und notieren Sie das veraltete aria-*-Attribut und die Rolle des Elements.
- Öffnen Sie den Bereich „Barrierefreiheit“ in den Entwicklertools des Browsers und prüfen Sie, ob der Zustand des Attributs am Element noch angezeigt wird (zum Beispiel disabled, invalid, has popup).
- Navigieren Sie mit einem Screenreader zum Element und achten Sie darauf, ob dieser Zustand angesagt wird.
- Suchen Sie nach einem nicht veralteten Weg, dasselbe zu vermitteln (ein natives Attribut wie disabled oder eine Rolle, die das Attribut unterstützt), und prüfen Sie, ob die Seite ihn bereits nutzt.
Bestanden. Der Zustand wird angesagt oder zusätzlich über ein natives Attribut oder eine unterstützte Rolle vermittelt, sodass nichts allein vom veralteten Attribut abhängt.
Nicht bestanden. Der Zustand wird nur über das veraltete Attribut vermittelt und der Screenreader sagt ihn nicht an, sodass der Zustand des Elements nicht bereitgestellt wird (WCAG 4.1.2).