5546 sujets

Sémantique web et HTML

Bonjour,

Suivant en cela de nombreux tutos, dont celui de ce site : "Faire un lien vers un endroit précis de la page (ancre) ?", je nommais mes ancres avec id, et pas avec name. Par exemple :
<a id="listing"></a>


L'audit SEO de Google Lighthouse ne passe pas indiquant que le lien n'est pas "crawlable" et plombe la note à 87! Il faut écrire :
<a name="listing"></a>

et, miracle, l'audit passe, la note est à 100.

J'espère ne pas me tromper et être utile, merci pour les commentaires.
Modifié par bdegoy (02 Feb 2021 - 11:12)
Bonjour, pour une balise a ce n'est pas plutôt href qu'il faut utiliser ? --> erreur de ma part Smiley rolleyes
Modifié par comar91 (02 Feb 2021 - 11:00)
Modérateur
Bonjour,

1) Quand <a> a un attribut "name", ce n'est pas un lien mais une ancre (sans lien).

2) S'il n'a pas d'attribut "name", c'est donc un lien (parfois mes capacités de déduction m'étonnent moi-même). On attend donc effectivement un attribut href, comme le remarque for justement comar91.

3) N'importe quel élément avec un id peut servir d'ancre y compris un <a> qui serait un lien (mais qui doit du coup avoir un href).

En résumé, c'est soit
<a name="toto"></a>

soit
<a id="toto" href="quelquechose.html">N'importe quoi</a>


EDIT: en fait, "name" est obsolète en html5. Et selon moi, <a> devrait être évité pour faire des ancres (sans lien).
EDIT2: en fait les spécifications html actuelles permettent de faire des liens sans attribut "href". Voir https://html.spec.whatwg.org/#the-a-element
EDIT3: tout ce micmac provient du fait que dans les temps anciens, un <a> pouvait avoir 2 utilisations distinctes, à savoir être un lien (avec un href) ou être la cible d'un lien (avec un name). Il ne reste plus aujourd'hui que la notion de lien avec ou sans href. Mais si c'est sans href, c'est juste pour occuper un endroit où il y aurait pu avoir un lien, et non dans l'intention de placer un élément qui serait la cible d'un lien. La différence est subtile et d'autant plus difficile à saisir que par ailleurs tout élément avec un id peut être la cible d'un lien.

Lighthouse a donc tort de se plaindre (sauf peut-être s'il n'y a rien en les <a> et </a> car il pourrait soupçonner le codeur d'avoir voulu faire une ancre sans lien, ce qui est obsolète, alors qu'il ne peut plus faire avec un <a> dans le monde moderne que des liens ou occuper une place où il y aurait pu avoir un lien ? Smiley lol ) !

Amicalement,
Modifié par parsimonhi (02 Feb 2021 - 13:54)