Zellenüberschriften
Silktide prüft Tabellenzellen, die ihre Überschriften über das Attribut headers angeben, und verifiziert, dass jede referenzierte ID tatsächlich existiert. Ein Verweis auf eine fehlende ID trennt die Verbindung zwischen einer Zelle und ihrer Überschrift unbemerkt.
In komplexen Tabellen kann jede Datenzelle ein Attribut headers tragen, das die id-Werte der auf sie zutreffenden Kopfzellen auflistet. Wird eine ID vertippt oder wurde die referenzierte Überschrift umbenannt oder entfernt, funktioniert die Zuordnung stillschweigend nicht mehr.
<!-- Problem: Es gibt kein Element mit id="prise" (Tippfehler für „price“) -->
<td headers="prise">$40</td>
Warum das wichtig ist
Ein nutzt headers-Zuordnungen, um vor jedem Wert die richtigen Überschriften anzukündigen, wodurch Personen, die die Tabelle nicht sehen können, nachvollziehen können, was jede Zahl bedeutet. Wenn ein Verweis ins Leere zeigt, wird die Zelle ohne Kontext angesagt, und die Zuhörenden können nicht wissen, dass etwas fehlt – die Tabelle wird dadurch schwerer oder gar unmöglich nachzuvollziehen.
Defekte Verweise schleichen sich meist mit der Zeit ein: Die id einer Überschrift wird umbenannt, eine Spalte wird gelöscht oder ein generiert IDs neu. Visuell ändert sich nichts, daher bemerkt ohne automatisierte Prüfung niemand etwas.
So beheben Sie das
- Suchen Sie das
headers-Attribut der Zelle und vergleichen Sie jede aufgeführte ID mit denid-Attributen der Kopfzellen der Tabelle. - Korrigieren Sie Tippfehler oder aktualisieren Sie die Liste auf die aktuelle
idder Überschrift. - Wenn eine referenzierte Überschrift nicht mehr existiert, entfernen Sie die veraltete ID aus der Liste.
- Wenn die Tabelle einfach ist – eine Zeile oder Spalte mit Überschriften –, überlegen Sie,
headers-Zuordnungen ganz wegzulassen und stattdessen<th>-Zellen mitscope-Attributen zu verwenden; diese können auf diese Weise nicht kaputtgehen.
<!-- Behoben: Der Verweis passt zu einer echten Überschrift -->
<th id="price">Preis</th>
...
<td headers="price">$40</td>
So testet Silktide das
- Auf jeder Seite alle Tabellenzellen mit einem
headers-Attribut finden. - Den Attributwert in einzelne IDs aufteilen.
- Jede ID irgendwo auf der Seite nachschlagen.
- Jede Zelle melden, die mindestens eine nicht vorhandene ID referenziert.
Fehlerbehebung
Die ID existiert, aber die Zelle wird trotzdem gemeldet
Prüfen Sie auf exakte Übereinstimmung: IDs unterscheiden Groß- und Kleinschreibung, daher sind Price und price unterschiedliche IDs. Stellen Sie außerdem sicher, dass die Liste nur durch Leerzeichen getrennt ist – Kommata oder andere Satzzeichen werden Teil der ID und verhindern das Auffinden.