Dubblett-ID:n
Silktide hittar sidor där samma id-värde används för mer än ett element. ID:n
måste vara unika på en sida, eftersom allt som hänvisar till ett ID – formuläretiketter,
ARIA-relationer och länkar på sidan – bara kan hitta en av dubbletterna.
<!-- Båda inmatningsfälten delar id="name": vilket fält beskriver varje etikett? -->
<label for="name">Ditt namn</label>
<input id="name">
<label for="name">Företagsnamn</label>
<input id="name">
Varför detta är viktigt
är beroende av ID-referenser för att koppla samman relaterade element.
När ID:n är duplicerade kan en
läsa upp fel etikett för ett formulärfält, eller ingen etikett alls – i exemplet
ovan kan båda fälten läsas upp som ”Ditt namn”, så att användaren skriver sitt namn
i fältet för företagsnamn. Samma problem påverkar -attribut
som aria-labelledby och aria-describedby, samt länkar på sidan
som hoppar till ett #id.
Så åtgärdar du problemet
- Byt namn på dubbletterna så att varje
idpå sidan är unikt, och uppdatera allt som hänvisade till dem (for-attribut, ARIA-attribut och länkar). - Om dubbletterna kommer från en upprepad komponent – en mall som infogas flera gånger per sida – ändrar du mallen så att den genererar unika ID:n, eller använder klasser i stället för ID:n som stilmallar inte behöver hänvisa till.
- Om en markerad dubblett verkligen är ofarlig i ditt sammanhang kan du ignorera resultatet.
Så testar Silktide detta
- Hitta alla element på sidan som har ett
id-attribut. Element inuti SVG- grafik hoppas över, eftersom deras ID:n finns i ett separat sammanhang. - Gruppera elementen efter deras
id-värde. - När fler än ett element delar samma
idmarkeras vart och ett av dem.