Est-il correct d'utiliser une balise d'ancrage sans inclure l' href
attribut et à la place à l'aide d'un gestionnaire d'événements de clic JavaScript? Je voudrais donc omettre href
complètement, même pas l'avoir vide ( href=""
).
232
<span>
éléments peuvent très certainement être parcourus via le clavier . Vous pouvez également faire en sorte que les<a>
éléments ne soient pas navigables via le clavier .Réponses:
En HTML5, l'utilisation d'un
a
élément sanshref
attribut est valide. Il est considéré comme un «hyperlien d'espace réservé».Exemple:
Recherchez «hyperlien d'espace réservé» sur la page de référence de la balise d'ancrage w3c: https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element .
Et il est également mentionné sur le wiki ici: https://www.w3.org/wiki/Elements/a
Un lien d'espace réservé est destiné aux cas où vous souhaitez utiliser un élément d'ancrage, mais ne le faites naviguer nulle part. Cela est pratique pour baliser la page actuelle dans un menu de navigation ou un fil d'Ariane. (L'ancienne approche aurait consisté à utiliser une balise span ou une balise d'ancrage avec une classe nommée "active" ou "courante" pour la styliser et JavaScript pour annuler la navigation.)
Un lien d'espace réservé est également utile dans les cas où vous souhaitez définir dynamiquement la destination du lien via JavaScript lors de l'exécution. Vous définissez simplement la valeur de l'attribut href et la balise d'ancrage devient cliquable.
Voir également:
la source
href
lecursor: pointer
style ne sera pas automatiquement ajouté à l'élément.C'est OK, mais en même temps, cela peut ralentir certains navigateurs.
http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/
Mon conseil est d'utiliser <a href="#"> </a>
Si vous utilisez JQuery, n'oubliez pas d'utiliser également:
la source
Réponse courte: Non.
Longue réponse:
Tout d'abord, sans attribut href, ce ne sera pas un lien. S'il ne s'agit pas d'un lien, il ne sera pas accessible par clavier (ou interrupteur respiratoire, ou par tout autre périphérique d'entrée non basé sur un pointeur) (sauf si vous utilisez des fonctionnalités HTML 5
tabindex
qui ne sont pas universellement prises en charge). Il est très rare qu'il soit approprié qu'un contrôle n'ait pas accès au clavier.Seconde. Vous devriez avoir une alternative pour quand le JavaScript ne s'exécute pas (parce qu'il a été lent à charger depuis le serveur, une connexion Internet a été interrompue (par exemple, un signal mobile dans un train en mouvement), JS est désactivé, etc.).
Utilisez l' amélioration progressive par un JS discret.
la source
href
était obligatoire (sauf s'il s'agissait d'une ancre nommée, auquel cas tabindex n'avait pas de sens). L'utilisation detabindex
pour ajouter des éléments flous à l'ordre de tabulation est une nouvelle innovation dans HTML 5.a
balise sanshref
attribut.Si vous devez utiliser href pour une compatibilité descendante, vous pouvez également utiliser
au lieu de #, si vous ne souhaitez pas utiliser l'attribut
la source
La balise est très bien à utiliser sans attribut href. Contrairement à de nombreuses réponses ici, il existe en fait des raisons standard pour créer une ancre lorsqu'il n'y a pas de href. Sémantiquement, "a" signifie une ancre ou un lien. Si vous l'utilisez pour tout ce qui suit ce sens, alors tout va bien.
Une utilisation standard de la balise a sans href est de créer des liens nommés. Cela vous permet d'utiliser une ancre avec name = blah et plus tard, vous pouvez créer une ancre avec href = # blah pour créer un lien vers la section nommée de la page en cours. Cependant, cela est obsolète car vous pouvez également utiliser les ID de la même manière. Par exemple, vous pouvez utiliser une balise d'en-tête avec id = header et plus tard, vous pouvez avoir une ancre pointant vers href = # header.
Mon point, cependant, n'est pas de suggérer d'utiliser la propriété name. Seulement pour fournir un cas d'utilisation où vous n'avez pas besoin d'un href, et donc pourquoi il n'est pas nécessaire.
la source
href
attribut d'un<a>
élément qui est utilisé comme élément interactif (c'est-à-dire un lien). Comme vous le mentionnez, sanshref
attribut, c'est tout simplement ... pas un lien, juste une ancre, ce qui est tout à fait différent.Du point de vue de l'accessibilité
<a>
sans href n'est pas tabable, tous les liens doivent être tabulables, donc ajoutez un tabindex = '0 "si vous n'avez pas de href.la source
La
<a>
balise sans le "href" peut être pratique lorsque vous utilisez des menus à plusieurs niveaux et vous devez développer le niveau suivant, mais vous ne voulez pas que cette étiquette de menu soit un lien actif. Je n'ai jamais eu aucun problème à l'utiliser de cette façon.la source
Dans certains navigateurs, vous rencontrerez des problèmes si vous ne donnez pas d'attribut href. Je vous suggère d'écrire votre code quelque chose comme ceci:
vous pouvez remplacer yourcode () par votre propre fonction ou logique, mais n'oubliez pas d'ajouter return false; déclaration à la fin.
la source
#
pour la page d'index. Pour certains de mes liens de barre de navigation, je ne veux pas déclencher un itinéraire vers#
lequel se produit si vous l'utiliseza href="#"
seul. L'utilisation<a href="#" onclick="return false;"
arrête la route en cours de déclenchement mais l'événement click continue de bouillonner jusqu'à mon gestionnaire (qui utilise les événements DOM connectés via jQuery et Backbone.Radio). Merci @ shashwat13 :)