duplicate-id
IDs müssen eindeutig sein
Prüft, dass jeder nicht leere Wert eines id-Attributs innerhalb seines eigenen Dokuments bzw. Shadow Trees eindeutig ist (WCAG 2.0/2.1 SC 4.1.1, in WCAG 2.2 entfernt).
Anwendbarkeit. Gilt für jedes Element mit einem nicht leeren id-Attribut. Die Sichtbarkeit spielt keine Rolle. Eine doppelte id stört dieselben Nachschlagevorgänge, ob das Element gerendert wird oder nicht; deshalb wertet ACT 3ea0c8 auch ausgeblendete Elemente aus.
Erwartung. Kein anderes Element im selben Baum trägt denselben id-Wert, verglichen genau wie geschrieben (id="a " und id="a" sind verschiedene ids). Ids gelten pro Dokumentbaum und pro Shadow Tree, daher ist dieselbe id in zwei verschiedenen Shadow Roots kein Duplikat.
Was ein Befund meldet.
reasonCode:DUPLICATE_ID_IN_SHADOW_TREE, wenn die Elemente in einem Shadow Tree liegen, den ein Skript aufbaut und den das ausgelieferte Markup der Seite nicht enthält; sonstDUPLICATE_ID. Beide ergeben fail auf dieselbe Weise.id: die doppelte id.count: wie viele Elemente im selben Baum sie 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
<div id="section-1">First</div><div id="section-2">Second</div>
Jedes Element hat eine eigene id.
<div id="section-1">First</div><div id="section-1">Second</div>
Die id section-1 wird von zwei Elementen im selben Baum verwendet, was <label for>, Fragment-Links und getElementById stört.
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
- Untersuchen Sie die im Bericht genannten Elemente und notieren Sie die gemeinsame id.
- Prüfen Sie, ob etwas auf diese id verweist: das for eines Labels, ein aria-*-Attribut wie aria-labelledby oder ein Link auf #the-id.
- Verweist etwas darauf, folgen Sie dem Verweis (klicken Sie auf das Label oder den Link oder lesen Sie den Namen im Bereich „Barrierefreiheit“) und prüfen Sie, ob er das beabsichtigte Element erreicht.
- Prüfen Sie, welche WCAG-Version und welchen Standard die Prüfung anwendet; unter WCAG 2.2 oder 2.0/2.1 mit den Errata von 2023 ist 4.1.1 für HTML erfüllt.
Bestanden. Durch das Duplikat geht nichts kaputt (Verweise erreichen das beabsichtigte Element) und die Prüfung verwendet WCAG 2.2 oder 2.0/2.1 mit den Errata, unter denen 4.1.1 erfüllt ist.
Nicht bestanden. Ein Label, ein ARIA-Verweis oder ein Link erreicht das falsche Element (WCAG 1.3.1 oder 4.1.2), oder die Prüfung folgt einem Standard, der den Text von 4.1.1 beibehält, etwa EN 301 549 V3.2.1, wonach doppelte ids gegen 4.1.1 verstoßen (F77).
DUPLICATE_ID_IN_SHADOW_TREE
- Untersuchen Sie die im Bericht genannten Elemente im selben Shadow Root und notieren Sie die gemeinsame id.
- Prüfen Sie, ob etwas auf diese id verweist: das for eines Labels, ein aria-*-Attribut wie aria-labelledby oder ein Link auf #the-id.
- Verweist etwas darauf, folgen Sie dem Verweis (klicken Sie auf das Label oder den Link oder lesen Sie den Namen im Bereich „Barrierefreiheit“) und prüfen Sie, ob er das beabsichtigte Element erreicht.
- Prüfen Sie, welche WCAG-Version und welchen Standard die Prüfung anwendet; unter WCAG 2.2 oder 2.0/2.1 mit den Errata von 2023 ist 4.1.1 für HTML erfüllt.
Bestanden. Durch das Duplikat geht nichts kaputt (Verweise erreichen das beabsichtigte Element) und die Prüfung verwendet WCAG 2.2 oder 2.0/2.1 mit den Errata, unter denen 4.1.1 erfüllt ist.
Nicht bestanden. Ein Label oder ARIA-Verweis in der Komponente erreicht das falsche Element (WCAG 1.3.1 oder 4.1.2), oder die Prüfung folgt einem Standard, der den Text von 4.1.1 beibehält, etwa EN 301 549 V3.2.1, wonach doppelte ids gegen 4.1.1 verstoßen (F77).