¿Por qué los navegadores no arrojan un error cuando se usa cualquier otra palabra en lugar de 'javascript' en el valor de onclick?

100

Heredé un sitio web y me encontré con esta curiosidad:

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

Puedo mostrar la página que lo contiene y hacer clic en el enlace para obtener el cuadro de diálogo de confirmación exactamente igual que cuando cambio " jamoscript" a " javascript". No se muestran diagnósticos en la consola de Firebug, ya sea cuando se carga la página o cuando se hace clic en el enlace. ¿Qué diablos? Buscar en Google jamoscript no arroja nada interesante.

¿Alguien puede explicar este comportamiento?

hollín
fuente

Respuestas:

144

El valor de cadena de un atributo "onclick" se toma como código JavaScript simple. JavaScript incluye disposiciones para declaraciones etiquetadas , por lo que el código es una returndeclaración con la etiqueta "jamoscript". En otras palabras, esto:

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

es JavaScript perfectamente legal. Las etiquetas no se usan mucho, por lo que no son familiares.

El único contexto en el que importa el prefijo "javascript:" es cuando se espera una URL, como es el caso del atributo "href" de las <a>etiquetas.

Puntiagudo
fuente
53
Esta pregunta me hace desear realmente que el lenguaje se haya llamado "JamoScript".
Puntiagudo
5
Esto me recuerda el famoso problema de lo que hace el siguiente: function foo(a) { x: 2 }.
80
Creé una cuenta aquí, solo para decirte que esta línea de código (? -No soy programador) fue sin duda escrita por un griego, o al menos "jamoscirpt" fue propuesta por un griego. "Jamo" es cómo uno intentaría usar los sonidos de las letras en inglés para producir el sonido que tiene la palabra "f --- ing" en el idioma griego. Entonces, si intentas leer en voz alta "jamoscript", una persona griega que conozca la palabra "script" entenderá "maldito script". El efecto deseado sería más seguro si en lugar de "j" se usara la letra "g", pero supongo que existía el juego pretendido con "j-ava".
Alecos Papadopoulos
6
@AlecosPapadopoulos wow eso es increíble. En todo caso, me hace desear aún más que la lengua se llama en realidad "JamoScript" :)
puntiagudo
6
@asawyer Aprecio la información (+1), pero por favor no me tientes a deshacerme de mi persona mansa en línea y volver a la verdadera ...
Alecos Papadopoulos