Qu'est-ce que "javascript:" dans un gestionnaire d'événements JavaScript?

Qu'est-ce que javascript: dans un gestionnaire d'événements JavaScript?

Tel que:

 <input onkeydown="javascript:return false;" type="text" name="textfield" /> 

C'est une erreur. Le pseudo-protocole n'est pas nécessaire dans les gestionnaires d'événements.

Sur une URL ( a attribut href élément, par exemple), si vous entrez javascript: et suivez cela avec javascript, le navigateur exécutera le code javascript.

Pour le gestionnaire d'événements, cela n'est pas nécessaire, mais le navigateur ne signaler aucune erreur.

Dans ce cas, il sera interprété comme une étiquette . Vous pourriez également écrire foobar: ici, il aurait le même effet.

Il n'est pas vraiment nécessaire dans le code JavaScript (je ne l'ai jamais vu en code réel), bien qu'il puisse être utile:

Fournit une déclaration avec un identifiant auquel vous pouvez vous référer en utilisant une déclaration de break ou de validation.

Par exemple, vous pouvez utiliser une étiquette pour identifier une boucle, puis utiliser les instructions de break ou de continue pour indiquer si un programme doit interrompre la boucle ou continuer son exécution.

Dans votre cas, le balisage devrait simplement être:

 <input onkeydown="return false;" type="text" name="textfield" /> 

Mais si vous l'utilisez comme un schéma dans un URI, il indique au navigateur d'interpréter et d'exécuter l'URI en tant que JavaScript:

 <a href="javascript:alert(1);">Foo</a> 

(Je ne dis pas que vous devriez faire quelque chose comme ça.)

Je suppose que les gens moins familiers avec JavaScript voient cela et pensent qu'ils doivent mettre javascript: partout en face du code JavaScript en HTML, également dans les gestionnaires d'événements.

Vous pouvez simplement écrire return false . À cette époque, le protocole javascript était utile dans les liens. href attribut: <a href="javascript:return false">

C'est quelque chose qui ne devrait pas être là.

Le javascript: préfixe est principalement utilisé pour les liens, car le javascript: protocole dans un navigateur exécute généralement le code, par exemple:

 <a href="javascript:alert('test')">Test</a> 

Dans un gestionnaire d'événements, cependant, il analyse déjà JavaScript, donc il n'est pas nécessaire. C'est essentiellement rien à faire.

C'est juste un balisage pour indiquer au navigateur que ce qui suit est le code JavaScript. Cependant, il n'est pas nécessaire, donc vous ne devez pas l'inclure.