J'ai vu le href suivant utilisé dans des pages web de temps en temps. Cependant, je ne comprends pas ce que cela tente de faire ni la technique. Quelqu'un peut-il m'expliquer ?
<a href="javascript:;"></a>
J'ai vu le href suivant utilisé dans des pages web de temps en temps. Cependant, je ne comprends pas ce que cela tente de faire ni la technique. Quelqu'un peut-il m'expliquer ?
<a href="javascript:;"></a>
Un site <a>
est un élément HTML invalide, à moins qu'il ne comporte un élément href
o name
attribut.
Si vous voulez qu'il soit rendu correctement en tant que lien (c'est-à-dire souligné, pointeur de la main, etc.), il ne le fera que s'il possède une balise href
attribut.
Un code de ce type est donc parfois utilisé comme un moyen de créer un lien, mais sans avoir à fournir une URL réelle dans la balise href
attribut. Le développeur voulait évidemment que le lien lui-même ne fasse rien, et c'était le moyen le plus simple qu'il connaissait.
Il a probablement un code d'événement javascript ailleurs qui est déclenché lorsque le lien est cliqué, et c'est ce qu'il veut qu'il se produise réellement, mais il veut que cela ressemble à un événement normal. <a>
lien avec le tag.
Certains développeurs utilisent href='#'
dans le même but, mais cela fait sauter le navigateur en haut de la page, ce qui n'est pas forcément souhaité. Et il ne pouvait pas simplement laisser le href vide, parce que href=''
est un lien vers la page actuelle (c'est-à-dire qu'il provoque un rafraîchissement de la page).
Il y a des moyens de contourner ces choses. L'utilisation d'un bout de code Javascript vide dans le href
est l'une d'entre elles, et bien qu'elle ne soit pas la meilleure solution, elle fonctionne.
Une meilleure façon de procéder est de faire en sorte que la fonction événement fasse return false;
o event.preventDefault()
alors le href
ne sera jamais appelée, vous pouvez donc y mettre quelque chose de plus raisonnable.
Un site <a>
sans href
o name
n'est pas invalide ; cela peut être facilement vérifié à l'aide d'un validateur.
En fait, au lieu d'utiliser le lien pour déplacer les pages (ou les ancres), cette méthode permet de lancer une ou plusieurs fonctions javascript.
<script>
function doSomething() {
alert("hello")
}
</script>
<a href="javascript:doSomething();">click me</a>
En cliquant sur le lien, l'alerte sera déclenchée.
Il existe plusieurs mécanismes pour éviter qu'un lien n'atteigne sa destination. Celui de la question n'est pas très intuitif.
Une option plus propre consiste à utiliser href="#no"
où #no
est une ancre non définie dans le document.
Vous pouvez utiliser un nom plus sémantique comme #disable, ou #action pour augmenter la lisibilité.
Avantages de l'approche :
Inconvénients :
Depuis le <a>
n'agit pas comme un lien, la meilleure option dans ces cas n'est pas d'utiliser un élément <a>
mais un élément <div>
et fournir le style de lien souhaité.
C'est un moyen de faire en sorte qu'un lien ne fasse absolument rien lorsqu'il est cliqué (à moins que des événements Javascript ne lui soient liés).
C'est une façon d'exécuter Javascript au lieu de suivre un lien :
<a href="Javascript: doStuff();">link</a>
Lorsqu'il n'y a pas de javascript à exécuter (comme dans votre exemple), il ne fait rien.
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.
2 votes
Vous pouvez appeler une méthode JS avec ceci si je ne me trompe pas javascript:SomeFunction()
2 votes
Il n'essaie pas de faire quoi que ce soit qui ne puisse pas être mieux géré avec un gestionnaire de clics approprié. Vous devriez l'éviter parce qu'il est laid, inaccessible et qu'il a incité les gens à utiliser la fonction
javascript:
où il ne devrait pas être utilisé (onclick="javascript:…"
)2 votes
Regarde ça : stackoverflow.com/a/138233/908879