Föråldrat scope-attribut
Silktide kontrollerar om scope-attribut har placerats på vanliga dataceller i tabeller. Scope-attributet beskriver vad en rubrik gäller för och hör därför endast hemma på rubrikceller. På en datacell är det föråldrat och kan vilseleda hjälpmedel.
I definieras scope för rubrikceller med <th>. Om det placeras på en datacell med <td> betyder det vanligtvis en av två saker: cellen är egentligen en rubrik och bör vara en <th>, eller så finns attributet kvar från gammal kod och bör tas bort.
<!-- Problem: scope på en datacell -->
<td scope="col">Namn</td>
Varför detta är viktigt
En bygger sin bild av en tabell utifrån koden. Ett scope-attribut på en datacell är en motsägelsefull signal: elementet säger "Jag är data" medan attributet säger "Jag etiketterar andra celler". Olika hanterar motsägelsen på olika sätt – vissa ignorerar attributet, andra behandlar cellen som en rubrik – vilket innebär att tabellen kan läsas upp med felaktiga eller inkonsekventa rubriker beroende på vilken programvara besökaren använder.
Så åtgärdar du problemet
Avgör vad cellen egentligen är:
- Om den fungerar som en rubrik ändrar du den till en
<th>och behåller ett giltigtscope-värde (row,col,rowgroupellercolgroup):
<!-- Åtgärdat: rubriken är en riktig rubrikcell -->
<th scope="col">Namn</th>
- Om den innehåller vanliga data tar du bort
scope-attributet helt:
<!-- Åtgärdat: vanlig datacell -->
<td>Namn</td>
Så testar Silktide detta
- Hitta varje tabellcell på varje sida.
- Rapportera varje datacell med
<td>som har ettscope-attribut, oavsett dess värde.