Un lien doit avoir une cible HREF à spécifier pour lui permettre d'être un objet d'affichage utilisable.
La plupart des navigateurs n'analyseront pas le JavaScript avancé dans un
<A HREF=""
balise telle que:
<A href="JavaScript:var elem = document.getElementById('foo');"
car la balise HREF dans la plupart des navigateurs n'autorise pas les espaces, ou convertira les espaces en% 20, l'équivalent HEX d'un ESPACE, ce qui rend votre JavaScript absolument inutile à l'interpréteur.
Donc, si vous souhaitez utiliser une balise A HREF pour exécuter JavaScript en ligne, vous devez spécifier une valeur valide pour HREF FIRST qui n'est pas trop complexe (ne contient pas d'espaces), puis fournir le JavaScript dans une balise d'attribut d'événement comme OnClick , OnMouseOver, OnMouseOut, etc.
La réponse typique est de faire quelque chose comme ceci:
<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>
Cela fonctionne bien, mais cela fait sauter la page vers le haut en raison du signe dièse / la balise de hachage lui dit de le faire.
Le simple fait de fournir un signe dièse / une balise de hachage dans une balise A HREF spécifie en fait l'ancrage racine, qui est toujours, par défaut, le haut de la page, vous pouvez spécifier un emplacement différent en utilisant la spécification de l'attribut NAME à l'intérieur d'une balise A HREF.
<A NAME='middleofpage'></A>
Vous pouvez ensuite modifier votre balise A HREF pour passer à «middleofpage» et exécuter le JavaScript dans l'événement OnClick, une fois que cela se produit comme suit:
<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>
Il y aura BEAUCOUP de fois où vous ne voulez pas que ce lien saute, vous pouvez donc faire deux choses:
<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>
Maintenant, il n'ira nulle part lorsque vous cliquerez dessus, mais cela pourrait entraîner un recentrage de la page à partir de sa fenêtre actuelle. Ce n'est pas joli. Quelle est la meilleure façon de fournir du javascript en ligne, en utilisant un A HREF, mais sans avoir à faire quoi que ce soit ci-dessus? JavaScript: void (0);
<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>
Cela indique au navigateur d'aller NULLE PART, mais d'exécuter à la place le code JavaScript valide: void (0); fonctionne d'abord dans la balise HREF car elle ne contient aucun espace et ne sera pas analysée en tant qu'URL. Il sera plutôt exécuté par le compilateur. VOID est un mot clé qui, lorsqu'il est fourni avec un périmètre de 0, renvoie UNDEFINED, qui n'utilise plus de ressources pour gérer une valeur de retour qui se produirait sans spécifier le 0 (il est plus convivial pour la gestion de la mémoire / les performances).
La prochaine chose qui se produit est l'exécution d'OnClick. La page ne bouge pas, rien ne se passe au niveau de l'affichage.
javascript:
est l'un des nombreux schémas d'URI: en.wikipedia.org/wiki/URI_scheme , commedata:
.