Ancre manquante
Silktide teste les liens qui pointent vers une partie spécifique de la même page - comme
#content - et signale ceux dont la cible n'existe pas. Cliquer sur un tel
lien ne produit aucun effet, laissant l'utilisateur là où il était.
<!-- Cassé : aucun élément de la page n'a id="content" -->
<a href="#content">Passer au contenu</a>
<!-- Corrigé : la cible existe -->
<a href="#content">Passer au contenu</a>
...
<main id="content">...</main>
Pourquoi c'est important
Les liens vers des ancres manquantes échouent silencieusement : il n'y a pas de page d'erreur, la page ne se déplace tout simplement pas. Pour les utilisateurs voyants, c'est déroutant ; pour les utilisateurs de et de clavier, c'est pire, car ces liens internes sont souvent précisément les mécanismes - comme « passer au contenu » ou une table des matières - qui rendent une longue page navigable. Une ancre cassée supprime discrètement ce raccourci.
Comment le corriger
- Ajouter la cible manquante : donnez à l'élément visé un
idcorrespondant au fragment du lien, par exemple<section id="pricing">pour un lien vers#pricing. - Ou corrigez le lien si la cible existe avec un
iddifférent - les fragments sont sensibles à la casse, donc#Pricingne correspond pas àid="pricing". - Si le lien n'existe que pour déclencher du ,
faites quand même pointer son fragment vers l'
idde l'élément réel. Le lien conserve ainsi son sens sans JavaScript ; vous devrez peut-être empêcher le défilement par défaut dans votre script.
<!-- Le fragment correspond à l'élément que le script révèle -->
<a href="#details" onclick="toggle('details')">Afficher les détails</a>
<div id="details">...</div>
Comment Silktide teste cela
- Trouver chaque lien de la page dont la destination inclut un fragment (la partie
après
#). - Ne garder que les liens qui pointent vers la page actuelle - soit des liens
purement
#fragment, soit des URL complètes vers la même page. Les liens vers des ancres sur d'autres pages ne sont pas testés par ce contrôle. - Rechercher un élément dont l'
idcorrespond au fragment, ou une ancre héritée<a name="...">avec un nom correspondant. - Signaler le lien si ni l'un ni l'autre n'existe.