En-têtes de cellules
Silktide vérifie les cellules de tableau qui nomment leurs en-têtes à l'aide de l'attribut headers et s'assure que chaque ID référencé existe réellement. Une référence à un ID manquant rompt discrètement la connexion entre une cellule et son en-tête.
Dans les tableaux complexes, chaque cellule de données peut porter un attribut headers qui énumère les valeurs id des cellules d'en-tête qui s'y appliquent. Si un ID est mal saisi, ou si l'en-tête vers lequel il pointait a été renommé ou supprimé, l'association cesse discrètement de fonctionner.
<!-- Problème: aucun élément avec id="prise" n'existe (faute de frappe pour "price") -->
<td headers="prise">$40</td>
Pourquoi c'est important
Un utilise les associations headers pour annoncer les bons en-têtes avant chaque valeur, ce qui permet à une personne qui ne voit pas le tableau de suivre la signification de chaque nombre. Lorsqu'une référence ne pointe vers rien, la cellule est annoncée sans son contexte, et l'auditeur n'a aucun moyen de savoir qu'il manque quelque chose - le tableau devient simplement plus difficile, voire impossible, à suivre.
Des références brisées apparaissent souvent avec le temps: l'id d'un en-tête est renommé, une colonne est supprimée, ou un régénère des ID. Rien ne change visuellement, donc sans vérification automatisée, personne ne s'en aperçoit.
Comment corriger le problème
- Repérez l'attribut
headersde la cellule et comparez chaque ID listé aux attributsiddes cellules d'en-tête du tableau. - Corrigez toute faute de frappe, ou mettez à jour la liste avec l'
idactuel de l'en-tête. - Si un en-tête référencé n'existe plus, retirez l'ID périmé de la liste.
- Si le tableau est simple - une seule ligne ou colonne d'en-têtes - envisagez de supprimer complètement les associations
headerset d'utiliser plutôt des cellules<th>avec des attributsscope, qui ne peuvent pas se briser de cette façon.
<!-- Corrigé: la référence correspond à un en-tête réel -->
<th id="price">Price</th>
...
<td headers="price">$40</td>
Comment Silktide teste cela
- Trouver chaque cellule de tableau avec un attribut
headerssur chaque page. - Scinder la valeur de l'attribut en ID individuels.
- Rechercher chaque ID n'importe où dans la page.
- Signaler chaque cellule qui fait référence à au moins un ID qui n'existe pas.
Dépannage
L'ID existe mais la cellule est quand même signalée
Vérifiez les problèmes d'exactitude: les ID sont sensibles à la casse, donc Price et price sont des ID différents. Assurez-vous aussi que la liste est séparée uniquement par des espaces - les virgules ou autres signes de ponctuation deviennent partie de l'ID et empêchent la recherche.