Verouderd scope-attribuut
Silktide controleert op scope-attributen die op gewone tabelgegevenscellen zijn geplaatst. Het scope-attribuut beschrijft waarop een kop betrekking heeft en hoort daarom alleen op kopcellen te staan; op een gegevenscel is het verouderd en kan het hulptechnologie misleiden.
In is scope gedefinieerd voor <th>-kopcellen. Als het op een <td>-gegevenscel wordt geplaatst, betekent dat meestal een van twee dingen: de cel is eigenlijk een kop en moet een <th> zijn, of het attribuut is achtergebleven uit oude markup en moet worden verwijderd.
<!-- Probleem: scope op een gegevenscel -->
<td scope="col">Name</td>
Waarom dit belangrijk is
Een bouwt zijn beeld van een tabel op basis van de markup. Een scope-attribuut op een gegevenscel is een tegenstrijdig signaal: het element zegt "Ik ben gegevens", terwijl het attribuut zegt "Ik label andere cellen". Verschillende lossen die tegenstrijdigheid verschillend op: sommige negeren het attribuut, andere behandelen de cel als een kop. Daardoor kan de tabel worden voorgelezen met verkeerde of inconsistente koppen, afhankelijk van de software die de bezoeker gebruikt.
Zo los je het op
Bepaal wat de cel werkelijk is:
- Als de cel als kop fungeert, wijzig je deze in een
<th>en behoud je een geldigescope-waarde (row,col,rowgroupofcolgroup):
<!-- Opgelost: de kop is een echte kopcel -->
<th scope="col">Name</th>
- Als het een gewone gegevenscel is, verwijder je het
scope-attribuut volledig:
<!-- Opgelost: gewone gegevenscel -->
<td>Name</td>
Zo test Silktide dit
- Zoek elke tabelcel op elke pagina.
- Rapporteer elke
<td>-gegevenscel die eenscope-attribuut bevat, ongeacht de waarde ervan.