Question Que signifie "javascript: void (0)"?


<a href="javascript:void(0)" id="loginlink">login</a>

J'ai vu tel hrefs plusieurs fois, mais je ne sais pas ce que cela signifie exactement.


1029
2017-08-18 05:20


origine


Réponses:


le void l'opérateur évalue le donné   expression, puis retourne undefined.

le void l'opérateur est souvent utilisé simplement   pour obtenir le undefined primitif   valeur, en utilisant habituellement "void(0)" (lequel   est équivalent à "void 0"). Dans ces   cas, la variable globale undefined   peut être utilisé à la place (en supposant qu'il a   n'a pas été affecté à un non-défaut   valeur).

Une explication est fournie ici: void opérateur.

La raison pour laquelle vous voulez faire cela avec le href d'un lien est que normalement, un javascript: URL redirigera le navigateur vers une version en texte brut du résultat de l'évaluation de ce JavaScript. Mais si le résultat est undefined, alors le navigateur reste sur la même page. void(0) est juste un script court et simple qui évalue à undefined.


793
2017-08-18 05:23



En plus de la réponse technique, javascript:void signifie que l'auteur est Doing It Wrong.

Il n'y a pas de bonne raison d'utiliser un javascript: pseudo-URL (*). En pratique, cela provoquera de la confusion ou des erreurs si quelqu'un essaie des choses comme 'lien de signet', 'ouvrir un lien dans un nouvel onglet', et ainsi de suite. Cela arrive assez souvent maintenant que les gens se sont habitués au moyen-cliquer-pour-nouvel-onglet: il ressemble à un lien, vous voulez le lire dans un nouvel onglet, mais il s'avère être pas un vrai lien du tout, et donne des résultats indésirables comme une page vierge ou une erreur JS lorsque vous cliquez sur le bouton du milieu.

<a href="#"> est une alternative commune qui pourrait être sans doute moins mauvaise. Cependant, vous devez vous rappeler de return false de ton onclick gestionnaire d'événement pour éviter que le lien soit suivi et faire défiler vers le haut de la page.

Dans certains cas, il peut y avoir un endroit utile pour indiquer le lien. Par exemple, si vous avez un contrôle, vous pouvez cliquer sur ce qui ouvre un précédemment caché <div id="foo">, il est logique d'utiliser <a href="#foo"> pour lier à cela. Ou s'il y a une façon non-JavaScript de faire la même chose (par exemple, 'thispage.php? Show = foo' qui définit foo pour commencer), vous pouvez lier à cela.

Sinon, si un lien ne pointe que vers un script, ce n'est pas vraiment un lien et ne devrait pas être balisé comme tel. L'approche habituelle serait d'ajouter onclick à un <span>, <div>, ou un <a> sans href et le style d'une certaine manière pour le rendre clair, vous pouvez cliquer dessus. C'est ce que StackOverflow [a fait au moment de l'écriture; maintenant il utilise href="#"]

L'inconvénient de ceci est que vous perdez le contrôle du clavier, puisque vous ne pouvez pas tabuler sur un span / div / bare-a ou l'activer avec de l'espace. Le fait que ce soit réellement un désavantage dépend du type d'action que l'élément est censé prendre. Vous pouvez, avec un certain effort, tenter d'imiter l'interactivité du clavier en ajoutant tabIndex à l'élément, et en écoutant une touche de l'espace. Mais il ne va jamais reproduire à 100% le comportement réel du navigateur, notamment parce que différents navigateurs peuvent répondre différemment au clavier (sans parler des navigateurs non-visuels).

Si vous voulez vraiment un élément qui n'est pas un lien mais qui peut être activé normalement par la souris ou le clavier, ce que vous voulez est un <button type="button"> (ou <input type="button"> est aussi bon, pour un contenu textuel simple). Vous pouvez toujours utiliser CSS pour le redessiner afin qu'il ressemble plus à un lien qu'à un bouton, si vous le souhaitez. Mais comme il se comporte comme un bouton, c'est comme ça que vous devriez le marquer.

(*: dans la création de site, de toute façon.) Évidemment, ils sont utiles pour les bookmarklets. javascript: Les pseudo-URL sont une bizarrerie conceptuelle: un localisateur qui ne pointe pas vers un emplacement, mais qui appelle le code actif à l'intérieur de l'emplacement actuel. Ils ont causé d'énormes problèmes de sécurité pour les navigateurs et les applications web, et n'auraient jamais dû être inventés par Netscape.)


368
2017-08-18 10:50



Cela signifie que ça ne fera rien. C'est une tentative pour que le lien ne «navigue» nulle part. Mais ce n'est pas la bonne façon.

Vous devriez en fait juste return false dans le onclick événement, comme ça:

<a href="#" onclick="return false;">hello</a>

Généralement, il est utilisé si le lien fait quelque chose 'JavaScript-y'. Comme poster un formulaire AJAX, ou échanger une image, ou autre. Dans ce cas, vous faites juste ce que la fonction est appelée retour false.

Cependant, pour rendre votre site Web complètement génial, vous incluez généralement un lien qui effectue la même action, si la personne qui le consulte choisit de ne pas exécuter JavaScript.

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>

102
2017-08-18 05:21



Il y a une différence énorme dans le comportement de "#" vs javascript: void

"#" vous fait défiler vers le haut de la page tandis que "javascript: void (0);" ne fait pas.

Ceci est très important si vous codez des pages dynamiques. l'utilisateur ne veut pas revenir en haut simplement parce qu'il a cliqué sur un lien sur la page.


57
2017-08-18 08:25



Il est très utilisé pour ajouter des fonctions JavaScript au lien HTML, par exemple: [Print] lien que vous voyez sur de nombreuses pages Web. Le code est comme:

<a href="javascript:void(0)" onclick="call print function">Print</a>

Pourquoi avons-nous besoin 'href' tandis que 'onclick' seul peut faire le travail? Parce que si nous omettons le 'href', lorsque les utilisateurs passent la souris sur le texte "Imprimer", le curseur se transforme en "I". Ayant 'href' permet au curseur de s'afficher comme s'il s'agissait d'un lien hypertexte: une main pointée.

PS: Il y a deux méthodes: 1. href="javascript:void(0);" et 2. href="#" - les deux ont le même effet. Mais le 1er exige que JavaScript soit activé dans le navigateur Web alors que le second ne le fait pas. Donc, la seconde semble être plus compatible.


46
2018-01-14 07:17



Vous devriez toujours avoir un href sur votre une Mots clés. L'appel d'une fonction JavaScript qui renvoie 'undefined' fera très bien l'affaire. Donc va lier à "#".

Les balises d'ancrage dans Internet Explorer 6 sans href n'obtiennent pas le a:hover style appliqué.

Oui, c'est terrible et un crime mineur contre l'humanité, mais là encore, Internet Explorer 6 en général.

J'espère que ça aide.

Internet Explorer 6 est en réalité un crime majeur contre l'humanité.


35
2017-08-18 05:25



le void L'opérateur évalue l'expression donnée puis renvoie undefined. Cela évite d'actualiser la page.


13
2017-07-24 13:47



void est un opérateur qui est utilisé pour retourner un undefined valeur de sorte que le navigateur ne sera pas en mesure de charger une nouvelle page.

Les navigateurs Web essaieront de prendre tout ce qui est utilisé comme URL et le chargeront, sauf s'il s'agit d'une fonction JavaScript qui renvoie null. Par exemple, si nous cliquons sur un lien comme celui-ci:

<a href="javascript: alert('Hello World')">Click Me</a>

alors un message d'alerte apparaîtra sans charger une nouvelle page, et c'est parce que alert est une fonction qui renvoie une valeur nulle. Cela signifie que lorsque le navigateur tente de charger une nouvelle page, il voit null et n'a rien à charger.

Une chose importante à noter à propos de l'opérateur vide est qu'il nécessite une valeur et ne peut pas être utilisé par lui-même. Nous devrions l'utiliser comme ceci:

<a href="javascript: void(0)">I am a useless link</a>

13
2018-03-15 07:34