Pourquoi les navigateurs ne génèrent-ils pas une erreur lorsqu'un autre mot est utilisé à la place de «javascript» dans la valeur de onclick?

100

J'ai hérité d'un site Web, et je viens de tomber sur cette curiosité:

<a href="/delete"  onClick="jamoscript:return confirm('Do you really want to do that?');">Delete all</a>

Je peux afficher la page qui le contient et cliquer sur le lien pour obtenir la boîte de dialogue de confirmation exactement comme je le fais lorsque je change de " jamoscript" en " javascript". Aucun diagnostic n'est affiché dans la console Firebug, que ce soit lorsque la page est chargée ou lorsque le lien est cliqué. Qu'est-ce que hey? Googler pour jamoscript ne révèle rien d'intéressant.

Quelqu'un peut-il expliquer ce comportement?

suie
la source

Réponses:

144

La valeur de chaîne d'un attribut "onclick" est considérée comme un simple code JavaScript. JavaScript inclut des dispositions pour les instructions étiquetées , de sorte que le code est une returninstruction avec l'étiquette «jamoscript». En d'autres termes, ceci:

jamoscript: return confirm("Do you really want to hurt me?");

est un JavaScript parfaitement légal. Les étiquettes ne sont pas beaucoup utilisées, donc elles ne sont pas familières.

Le seul contexte dans lequel le préfixe "javascript:" compte est lorsqu'une URL est attendue, comme c'est le cas avec l'attribut "href" des <a>balises.

Pointu
la source
53
Cette question me fait vraiment souhaiter que le langage s'appelle "JamoScript".
Pointy
5
Cela me rappelle le fameux problème de ce que le fait suivant: function foo(a) { x: 2 }.
80
J'ai créé un compte ici, histoire de vous dire que cette ligne de code (? -Je ne suis pas programmeur) a été sans aucun doute écrite par un Grec, ou du moins "jamoscirpt" a été proposé par un Grec. "Jamo" est la façon dont on essaierait d'utiliser les sons des lettres anglaises pour produire le son que le mot "f --- ing" a dans la langue grecque. Donc, si vous essayez de lire à haute voix "jamoscript", une personne grecque qui connaît le mot "script" comprendra "f --- ing script". L'effet recherché serait plus certain si au lieu de "j" la lettre "g" était utilisée, mais je suppose qu'il y avait le jeu prévu avec "j-ava".
Alecos Papadopoulos
6
@AlecosPapadopoulos wow c'est génial. Si quoi que ce soit, cela me fait souhaiter encore plus que le langage s'appelle en fait "JamoScript" :)
Pointy
6
@asawyer J'apprécie les informations (+1), mais s'il vous plaît, ne me tentez pas de perdre mon personnage en ligne doux et de revenir à mon vrai personnage ...
Alecos Papadopoulos