Ancla ausente
Silktide comprueba los enlaces que apuntan a una parte concreta de la misma página —como #content— e informa de aquellos cuyo destino no existe. Al hacer clic en un enlace así, no ocurre nada: el usuario se queda donde estaba.
<!-- Roto: en la página no hay nada con id="content" -->
<a href="#content">Saltar al contenido</a>
<!-- Corregido: el destino existe -->
<a href="#content">Saltar al contenido</a>
...
<main id="content">...</main>
Por qué es importante
Los enlaces a anclas inexistentes fallan de forma silenciosa: no aparece ninguna página de error, la página simplemente no se desplaza. Para los usuarios videntes esto es confuso; para usuarios de y de teclado es peor, porque estos enlaces dentro de la página suelen ser precisamente los mecanismos —como «saltar al contenido» o un índice— que hacen navegable una página larga. Un ancla rota elimina discretamente ese atajo.
Cómo solucionarlo
- Añada el destino que falta: asigne al elemento previsto un
idque coincida con el fragmento del enlace, por ejemplo<section id="pricing">para un enlace a#pricing. - O corrija el enlace si el destino existe con otro
id— los fragmentos distinguen entre mayúsculas y minúsculas, por lo que#Pricingno coincide conid="pricing". - Si el enlace existe solo para activar , haga que su fragmento apunte igualmente al
iddel elemento real. Así, el enlace conserva su significado sin JavaScript; puede que necesite evitar el desplazamiento predeterminado en su script.
<!-- El fragmento coincide con el elemento que revela el script -->
<a href="#details" onclick="toggle('details')">Mostrar detalles</a>
<div id="details">...</div>
Cómo lo comprueba Silktide
- Busca cada enlace de la página cuyo destino incluye un fragmento (la parte después de
#). - Conserva solo los enlaces que apuntan a la página actual —ya sean enlaces puramente
#fragmentoo URL completas a la misma página—. Los enlaces a anclas en otras páginas no se comprueban en esta verificación. - Busca un elemento cuyo
idcoincida con el fragmento, o un ancla heredada<a name="...">con un nombre coincidente. - Marca el enlace si no existe ninguno de los dos.