Cellrubriker
Silktide kontrollerar tabellceller som anger sina rubriker med attributet headers och verifierar att varje ID som de hänvisar till faktiskt finns. En hänvisning till ett saknat ID bryter i tysthet kopplingen mellan en cell och dess rubrik.
I komplexa tabeller kan varje datacell innehålla ett headers-attribut med en
lista över id-värdena för de rubrikceller som gäller för den. Om ett ID är
felstavat, eller om rubriken som det hänvisade till har bytt namn eller tagits
bort, slutar kopplingen tyst att fungera.
<!-- Problem: no element with id="prise" exists (typo for "price") -->
<td headers="prise">$40</td>
Varför detta är viktigt
En använder headers-kopplingar för att
läsa upp rätt rubriker före varje värde. Det är så någon som inte kan se
tabellen kan hålla reda på vad varje siffra betyder. När en hänvisning inte
leder någonstans läses cellen upp utan sitt sammanhang, och lyssnaren har
inget sätt att veta att något saknas – tabellen blir helt enkelt svårare eller
omöjlig att följa.
Brutna hänvisningar uppstår vanligtvis med tiden: en rubriks id byter namn,
en kolumn tas bort eller ett genererar om ID:n. Inget förändras
visuellt, så utan automatiska kontroller märker ingen det.
Så här åtgärdar du problemet
- Leta reda på cellens
headers-attribut och jämför varje angivet ID medid-attributen för tabellens rubrikceller. - Rätta eventuella stavfel eller uppdatera listan med rubrikens aktuella
id. - Om en hänvisad rubrik inte längre finns tar du bort det gamla ID:t från listan.
- Om tabellen är enkel – en rad eller kolumn med rubriker – kan du överväga
att ta bort
headers-kopplingarna helt och använda<th>-celler medscope-attribut i stället. Då kan detta fel inte uppstå på samma sätt.
<!-- Fixed: the reference matches a real heading -->
<th id="price">Price</th>
...
<td headers="price">$40</td>
Så här testar Silktide detta
- Hitta alla tabellceller med ett
headers-attribut på varje sida. - Dela upp attributvärdet i enskilda ID:n.
- Slå upp varje ID var som helst på sidan.
- Rapportera varje cell som hänvisar till minst ett ID som inte finns.
Felsökning
ID:t finns men cellen rapporteras fortfarande
Kontrollera problem med exakt matchning: ID:n är skiftlägeskänsliga, så Price
och price är olika ID:n. Kontrollera också att listan endast avgränsas med
blanksteg – kommatecken eller annan interpunktion blir en del av ID:t och
förhindrar uppslagningen.