presentation-role-conflict
Präsentationsrolle darf nicht mit einem globalen ARIA-Attribut oder Fokussierbarkeit kollidieren
Prüft, dass role="presentation"/"none" (einschließlich der impliziten Präsentationsrolle eines <img alt="">) nicht mit einem globalen ARIA-Attribut (aria-label, aria-hidden, aria-describedby, ...) oder mit Fokussierbarkeit (tabindex/nativ) kombiniert ist.
Anwendbarkeit. Gilt für Elemente, deren role-Attribut zu presentation oder none aufgelöst wird (das erste Token, das eine bekannte Rolle nennt, ohne Berücksichtigung der Groß-/Kleinschreibung abgeglichen, sodass role="foo none" und role="NONE" zählen), ODER für ein <img alt=""> ohne eigene explizite Rolle (ein leeres alt gibt einem <img> laut HTML-AAM eine implizite Präsentationsrolle, auch ganz ohne explizites role-Attribut: img[alt=''], [role~="none" i], [role~="presentation" i]).
Erwartung. Das Element trägt nicht zusätzlich einen globalen WAI-ARIA-Zustand bzw. eine globale Eigenschaft (aria-label, aria-hidden, aria-describedby, aria-live, aria-current, ...; die vollständige Menge der globalen Attribute, nicht nur die benennenden) UND ist nicht fokussierbar. Laut dem Abschnitt „Presentational Roles Conflict Resolution“ der WAI-ARIA-Spezifikation wird eine Präsentationsrolle auf die implizite semantische Rolle des Elements „zurückgesetzt“, sobald eine der beiden Bedingungen zutrifft: Die Rolle presentation/none hört stillschweigend auf zu wirken, entgegen der offensichtlichen Absicht, das Element aus dem Accessibility Tree zu entfernen.
Was ein Befund meldet.
role: die wirksame präsentationale Rolle:presentationodernone. Ein <img alt=""> ohne eigene Rolle meldetpresentation.conflictingAttrs: die globalen ARIA-Attribute, die das Element trägt, unabhängig von ihrem Wert. Ein Eintrag ist ein Attributname, etwaaria-label. Leer, wenn das Elementaria-hidden="true"hat oder nur seine Fokussierbarkeit im Konflikt steht.focusable:true, wenn das Element den Fokus erhalten kann, wodurch auch seine Rolle wiederhergestellt wird.
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="presentation">Decorative</div>
Neben der Präsentationsrolle ist kein kollidierendes benennendes Attribut vorhanden.
<div role="presentation" aria-label="Conflicting">Content</div>
role="presentation" fordert assistive Technologien auf, dieses Element zu überspringen, aber aria-label liefert einen Namen — laut der Konfliktauflösung von WAI-ARIA hat das globale Attribut Vorrang und die Präsentationsrolle entfällt, sodass das Element (samt Namen) unerwartet wieder im Baum auftaucht.
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.
PRESENTATION_ROLE_CONFLICT
- Suchen Sie das im Bericht genannte Element; es hat role="presentation" oder "none" oder ist ein img mit alt="".
- Notieren Sie die widersprüchlichen aria-*-Attribute, die der Bericht aufführt, und ob er angibt, dass das Element den Fokus erhalten kann.
- Öffnen Sie den Bereich „Barrierefreiheit“ der Entwicklertools und sehen Sie nach, welche Rolle und welchen Namen das Element tatsächlich bereitstellt.
- Entscheiden Sie, was gemeint war: Ist es dekorativ, entfernen Sie das aria-*-Attribut und die Fokussierbarkeit; trägt es Bedeutung, entfernen Sie die präsentationale Rolle (oder geben Sie dem Bild einen echten Alternativtext).
Bestanden. Das Element ist entweder rein dekorativ ohne globales aria-*-Attribut und ohne Fokus, oder es behält seine echte Rolle absichtlich.
Nicht bestanden. Das Element soll verborgen sein, aber sein aria-*-Attribut oder seine Fokussierbarkeit bringt seine Rolle zurück, sodass assistive Technologien es trotzdem bereitstellen (Best Practice, WAI-ARIA-Konfliktauflösung für präsentationale Rollen).