Qu'est-ce que l'expression <href="javascript:;"> </a> fait?

J'ai vu le temps suivant utilisé dans les pages Web de temps en temps. Cependant, je ne comprends pas ce que cela essaie de faire ou la technique. Quelqu'un peut-il élaborer s'il vous plaît?

<a href="javascript:;"></a> 

Un élément <a> est un code HTML invalide à moins qu'il ait un href ou name .

Si vous voulez qu'il soit correctement transmis comme lien (c.-à-d. Souligné, pointeur manuel, etc.), il ne le fera que s'il possède un attribut href .

Le code comme celui-ci est donc parfois utilisé comme moyen de créer un lien, mais sans avoir à fournir une URL réelle dans l'attribut href . Le développeur voulait évidemment le lien lui-même pour ne rien faire, 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 ce sera ce qu'il veut se produire réellement, mais il veut qu'il ressemble à un lien d'étiquette <a> normal.

Certains développeurs utilisent href='#' dans le même but, mais cela fait que le navigateur saute en haut de la page, ce qui peut ne pas être recherché. Et il ne pouvait pas simplement laisser le vide vide, car href='' est un lien vers la page actuelle (c'est-à-dire qu'il provoque un rafraîchissement de page).

Il existe des façons de faire ces choses. L'utilisation d'un code vide de code Javascript dans l' href est l'une d'entre elles, et même si ce n'est pas la meilleure solution, ça marche.

Il existe plusieurs mécanismes pour éviter un lien pour atteindre sa destination. Celui de la question n'est pas très intuitif.

Une option plus propre est d'utiliser href="#no"#no est une ancre non définie dans le document.

Vous pouvez utiliser un nom plus sémantique tel que #disable, ou #action pour augmenter la lisibilité.

Avantages de l'approche:

  • Évite l'effet «déplacement vers le haut» de l'href vide = "#"
  • Évite l'utilisation de javascript

Désavantages:

  • Vous devez vous assurer que le nom d'ancrage n'est pas utilisé dans le document.

Étant donné que l'élément <a> n'agit pas comme un lien, la meilleure option dans ces cas n'utilise pas un <a> élément mais un <div> et fournit le style de lien souhaité.

Essentiellement au lieu d'utiliser le lien pour déplacer des pages (ou des ancres), l'utilisation de cette méthode lance une ou plusieurs fonctions javascript

 <script> function doSomething() { alert("hello") } </script> <a href="javascript:doSomething();">click me</a> 

Cliquer sur le lien déclenche l'alerte.

 <a href="javascript:alert('Hello');"></a> 

Est juste un raccourci pour:

 <a href="" onclick="alert('Hello'); return false;"></a> 

Reportez-vous à ceci:

 <a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a> <a href="#MyDive">Link to the div in the page(look at the chaneged url)</a> <a href="javascript:;">Nothing happens if there is no javaScript to render</a> 

Ancien fil, mais je pensais simplement ajouter que la raison pour laquelle les développeurs utilisent cette construction n'est pas de créer un lien mort, mais parce que les URL javascript pour une raison quelconque ne transmettent pas correctement les références à l'élément html actif.

Par exemple handler_function(this.id) fonctionne comme onClick mais pas comme URL javascript.

C'est donc un choix entre l'écriture de code pédantiquement compatible avec les normes qui implique de devoir régler manuellement l'appel pour chaque lien hypertexte ou un code légèrement non standard qui peut être écrit une fois et utilisé partout.

C'est une façon de faire un lien ne fait absolument rien lorsqu'il est cliqué (à moins que les événements Javascript ne soient liés).

C'est une façon d'exécuter Javascript au lieu de suivre un lien:

 <a href="Javascript: doStuff();">link</a> 

Quand il n'y a pas de javascript pour exécuter (comme votre exemple), il ne fait rien.

La meilleure façon de toujours faire un lien correctement est avec le css comme suit:

 a {cursor: pointer !important} 

Il faut éviter de suivre des choses non nécessaires comme mentionné dans le fil.

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

javascript: indique au navigateur d'écrire le code javascript