identical-links-same-purpose
Links mit demselben zugänglichen Namen sollten zum selben Ziel führen
Markiert Gruppen von Links, die denselben zugänglichen Namen haben, aber zu mehr als einem Ziel aufgelöst werden, zur manuellen Prüfung, ob sie demselben Zweck dienen.
Anwendbarkeit. Gruppen von zwei oder mehr a[href]-Elementen oder Elementen, deren role-Attribut zu link aufgelöst wird (sein erstes echtes Rollen-Token, ohne Berücksichtigung der Groß-/Kleinschreibung), die einen nicht leeren zugänglichen Namen teilen (getrimmt, Leerraum zusammengefasst, Groß-/Kleinschreibung vereinheitlicht), wie in ACT b20e66. Ein Link, dessen Namen kein anderer Link teilt, hat nichts, womit er sich vergleichen ließe. Ein Custom Element, dem seine ElementInternals die Rolle link geben (this.attachInternals().role), ohne role-Attribut, das eine andere nennt, zählt wie ein natives Element mit dieser Rolle.
Erwartung. Innerhalb einer Seite wird erwartet, dass Links mit demselben zugänglichen Namen demselben Zweck dienen (also zum selben Ziel aufgelöst werden: der vollständig aufgelösten URL einschließlich eines etwaigen Fragments). Links mit gleichem Text und unterschiedlichem Ziel sind auf echten Websites häufig und oft beabsichtigt (z. B. wiederholte „Read more“-Links auf jeder Artikelkarte). Daher ist die Regel als type: 'manual' angelegt (auf cantTell begrenzt, nie fail) statt als harter Fail: Sie legt eine echte Abweichung zwischen Name und Ziel zur menschlichen Beurteilung vor, statt die Absicht zu erraten.
Was ein Befund meldet.
name: der zugängliche Name, den die Links teilen, ohne umgebende Leerzeichen, mit zusammengefassten Leerräumen und in Kleinbuchstaben.href: die vollständige URL, zu der dieser Link führt.distinctDestinationCount: zu wie vielen verschiedenen URLs die Links mit diesem Namen führen, eine Anzahl von 2 oder mehr.
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
<a href="/contact">Contact us</a><a href="/contact">Contact us</a>
Beide Links mit dem Namen „Contact us“ führen zur selben Seite.
<a href="/articles/1">Read more</a><a href="/articles/2">Read more</a>
Beide Links haben den zugänglichen Namen „Read more“, werden aber zu unterschiedlichen Zielen aufgelöst.
<a href="/articles/1">Read more: Quarterly results</a><a href="/articles/2">Read more: Product launch</a>
Der zugängliche Name jedes Links ist verschieden, es gibt also keine Gruppe mit gleichem Namen, deren Ziele sich vergleichen ließen.
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.
SAME_NAME_DIFFERENT_DESTINATION
- Suchen Sie alle Links mit dem Namen, den der Bericht angibt (die Linkliste eines Screenreaders hilft dabei), und notieren Sie, wohin jeder führt.
- Öffnen Sie jeden Link und vergleichen Sie die erreichten Seiten.
- Entscheiden Sie, ob die Seiten demselben Zweck dienen (dieselbe Seite mit Tracking-Parametern oder gleichwertige Seiten) oder unterschiedlichen.
- Führen sie zu Seiten unterschiedlicher Art, prüfen Sie, ob die Seite eine Möglichkeit bietet, Linknamen aussagekräftiger zu machen, etwa eine Einstellung, die den vollständigen Linktext zeigt. Das zählt nur, wenn sie sich mit der Tastatur einschalten lässt und danach jeder Linkname sagt, wohin er führt.
Bestanden. Jeder Link mit diesem Namen führt zur selben Seite oder zu Seiten mit demselben Zweck, oder eine per Tastatur einschaltbare Einstellung lässt jeden Linknamen sagen, wohin er führt.
Nicht bestanden. Links mit demselben Namen, etwa „Weiterlesen“, führen zu Seiten mit unterschiedlichem Zweck, und nichts auf der Seite macht sie am Namen unterscheidbar; das verstößt gegen WCAG 2.4.9 (ACT b20e66).