duplicate-id-aria

Von ARIA referenzierte IDs müssen eindeutig sein

automaticWCAG 4.1.2 (A)Konfidenz: highSchweregrad: seriousrobust

Prüft, dass jeder id-Wert, auf den ein ARIA-Attribut mit ID-Referenz verweist (aria-labelledby, aria-describedby, aria-owns, aria-controls, aria-activedescendant, aria-flowto, aria-errormessage, aria-details), im Dokument eindeutig ist.

Anwendbarkeit. Gilt, wenn das Dokument mindestens ein nicht leeres aria-labelledby-, aria-describedby-, aria-owns-, aria-controls-, aria-activedescendant-, aria-flowto-, aria-errormessage- oder aria-details-Attribut enthält (also mindestens eine aufzulösende ARIA-ID-Referenz existiert).

Erwartung. Für jeden id-Wert, auf den eines dieser Attribute verweist, trägt genau ein Element im Dokument diese id. Ein Duplikat macht den Verweis nicht kaputt: Er wird zum ersten Element in Baumreihenfolge aufgelöst, der Name wird also weiterhin berechnet. Ob dieses Element das beabsichtigte Ziel ist, hängt von der Absicht des Autors ab, die das Markup nicht enthält; das Ergebnis ist daher cantTell.

Was ein Befund meldet.

  • id: die doppelte id, auf die ein ARIA-Attribut verweist.
  • duplicateCount: wie viele Elemente im Dokument diese id tragen.

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
<span id="lbl">Name</span>
<input type="text" aria-labelledby="lbl">

Die id lbl ist eindeutig, der Verweis wird also eindeutig aufgelöst.

can't tell
<span id="lbl">Name</span>
<span id="lbl">Duplicate</span>
<input type="text" aria-labelledby="lbl">

aria-labelledby="lbl" wird zum ersten Element mit dieser id aufgelöst – ob das das beabsichtigte Ziel ist, ist eine Frage an den Autor, die das Markup nicht beantworten kann.

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.

DUPLICATE_ID_ARIA_REFERENCED

  1. Untersuchen Sie das im Bericht genannte Element und notieren Sie das ARIA-Attribut und die doppelte id, auf die es verweist.
  2. Durchsuchen Sie in den Entwicklertools das Markup nach id="the-id" und notieren Sie jedes Element, das sie trägt, und seinen Text; der Browser verwendet das erste.
  3. Öffnen Sie für das verweisende Element den Bereich „Barrierefreiheit“ in den Entwicklertools des Browsers und lesen Sie den Namen oder die Beschreibung, die es erhält.
  4. Vergleichen Sie das mit dem Text neben dem Element auf dem Bildschirm (zum Beispiel dem Titel seiner eigenen Karte).

Bestanden. Der Name oder die Beschreibung stammt vom beabsichtigten Element, oder alle Duplikate haben denselben Text.

Nicht bestanden. Das verweisende Element erhält Text vom falschen Element, etwa Karte 2 mit dem Titel von Karte 1 benannt; das verstößt gegen WCAG 4.1.2 (und 1.3.1).

Quellcode ansehen