194 votes

Valable pour utiliser <a>(balise d'ancrage) sans attribut href?</a>

J'ai été en utilisant Twitter Bootstrap pour construire un site, et beaucoup de ses fonctionnalités dépend de l'habillage des choses en <a>, même si ils vont juste à exécuter Javascript. J'ai eu des problèmes avec l' href="#" tactique de Bootstrap, documentation recommande, donc j'essayais de trouver une autre solution.

Mais ensuite, j'ai essayé de retirer le href attribut complètement. J'ai été en utilisant <a class='bunch of classes' data-whatever='data'>, et que le Javascript gérer le reste. Et il fonctionne.

Pourtant, quelque chose me dit que je ne devrais pas faire cela. Droit? Je veux dire, techniquement <a> est censé être un lien vers quelque chose, mais je ne suis pas entièrement sûr de pourquoi c'est un problème. Ou est-il?

307voto

zzzzBov Points 62084

L' <a>nchor élément est simplement un point d'ancrage ou de certains contenus. À l'origine de la spécification HTML autorisés pour les ancres nommées (<a name="foo">) et les liens ancres (<a href="#foo">).

L'ancre nommée format est moins couramment utilisés, comme l'identificateur de fragment est maintenant utilisé pour spécifier un [id] d'attribut (bien que pour la compatibilité ascendante, vous pouvez toujours spécifier [name] d'attributs). Un <a> élément sans [href] attribut est toujours valide.

Autant que de la sémantique et de style, l' <a> élément n'est pas un lien (:link) sauf s'il a un [href] d'attribut. Un effet secondaire de ceci est qu'un <a> élément sans [href] ne seront pas dans l'ordre de tabulation par défaut.

La vraie question est de savoir si l' <a> seul élément est une représentation appropriée d'un <button>. Sur un plan sémantique, il y a une nette différence entre un link et button.

Un bouton est quelque chose que quand on clique dessus les causes de la réalisation d'une action.

Un lien est un bouton qui provoque un changement dans la navigation dans le document actuel. La navigation qui se produit pourrait être de déplacer dans le document, dans le cas d'identificateurs de fragment (#foo) ou déménagement vers un nouveau document dans le cas d'url (/bar).

Comme les liens sont un type spécial de bouton, ils ont souvent eu leurs actions substituée à effectuer d'autres fonctions. En continuant à utiliser une ancre comme un bouton est ok à partir d'un point de vue de la cohérence, même si ce n'est pas tout à fait exacte du point de vue sémantique.

Si vous êtes inquiet au sujet de la sémantique et l'accessibilité de l'aide d'un <a> (ou <span>ou <div>) sous forme d'un bouton, vous devez ajouter les attributs suivants:

<a role="button" tabindex="0" ...>...</a>

Le bouton rôle de l'utilisateur indique que l'élément est traité comme un bouton comme un remplacement pour quelle que soit la sémantique de l'élément sous-jacent peut avoir eu.

Pour <span> et <div> éléments, vous pouvez ajouter du JavaScript clé auditeurs de l' Espace ou Entrée pour déclencher l' click événement. <a href> et <button> éléments de le faire par défaut, mais non le bouton éléments ne sont pas. Parfois, il est plus judicieux de lier l' click de déclencheur à une clé différente. Par exemple, un bouton "aide" dans une application web pourrait être lié à la F1.

70voto

swati Points 695

Je pense que vous pouvez trouver votre réponse ici: une balise d'ancrage sans l'attribut href est-elle sûre?

De plus, si vous ne voulez pas d'opération de lien avec href, vous pouvez l'utiliser comme:

 <a href="javascript:void(0);">something</a>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X