google - ¿Alguna vez necesita especificar ''javascript:'' en un clic?
google maps api key gratis (8)
Al principio, también podía usar VBScript en Internet Explorer en lugar de JavaScript, por lo que especificar "javascript: ..." era estándar.
Hoy en día, bueno, no duele ... Siempre podría haber algún otro lenguaje de scripts para navegadores en el futuro.
AFAIK, nunca necesita especificar el protocolo en un clic en un clic:
onclick="javascript:myFunction()"
Malo
onclick="myFunction()"
Bueno
Hoy noté en este artículo en Google Anallytics que lo están usando:
<a href="http://www.example.com" onClick="javascript: pageTracker._trackPageview(''/outgoing/example.com'');">
¿Este ejemplo está simplemente mal, o hay alguna razón para especificar javascript:
en algo que no sea un href
?
Algunas de las respuestas aquí afirman que el prefijo "javascript:" es un "remanente de los viejos tiempos", lo que implica que es intencionalmente, especialmente manejado por los navegadores para la compatibilidad con versiones anteriores. ¿Hay evidencia sólida de que este es el caso (alguien ha revisado el código fuente)?
<span onclick="javascript:alert(42)">Test</span>
Para mí, esto solo dice:
javascript:
alert(42);
Es decir, que "javascript:" es solo una etiqueta y no tiene ningún efecto. Esto funciona, también:
<span onclick="foobar:alert(42)">Test</span>
Actualizar:
Hice un pequeño experimento y resulta que, sí, "javascript:" es manejado especialmente por IE, pero definitivamente no es así por Firefox, Safari, Opera o Chrome:
<span onclick="javascript:while (true) { alert(''once''); break javascript; }">Test</span>
En el no-IE, esto solo alertará "una vez", una vez y luego saldrá del ciclo. En IE, aparece el error "Etiqueta no encontrada". Lo siguiente funciona bien en todos los navegadores:
<span onclick="foo:while (true) { alert(''once''); break foo; }">Test</span>
Actualización 2:
Me acabo de dar cuenta de que el enlace http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html en una de las respuestas anteriores prácticamente habla de lo mismo.
Consulte Especificación del lenguaje de scripting (en 18.2.2 en HTML 4.01 Specification , Scripts ).
Creo que el prefijo "javascript:" es un residuo de los viejos tiempos en los que aún existía la vaga posibilidad de que algo más que JavaScript pudiera manejar el evento.
Hoy es opcional y se mantiene por razones de compatibilidad con versiones anteriores. Pero no diría que es malo como tal, es innecesario.
En Internet Explorer, es posible establecer el idioma predeterminado establecido en VBScript para una página. En los primeros días siempre existió la idea de que otro lenguaje se puede usar para crear scripts en un navegador. Como se ha visto, ninguno de esos lenguajes se ha materializado en forma sustancial.
No me molesto con este prefijo de idioma.
Es una buena práctica para su programador de mantenimiento. El compilador conoce la diferencia, pero ese desarrollador web joven que acaba de salir de la universidad no puede hacerlo.
Nunca es necesario en los anclajes y nunca es una buena práctica. Un anclaje es solo para navegación. Un artículo sobre este tema es http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html .
Siempre he creído que era un mal uso basado en el hecho de que puede llamar a JavaScript dentro de una URL con el prefijo javascript:
:
<a href="javascript:void(alert(''really bad usage!''))">
(¿ Formas web , alguien?)
Y solo los desarrolladores web ignorantes que nunca se dieron cuenta de la diferencia entre una declaración de evento y una declaración href lo usaron.
Diría que incluso los atributos de eventos son malas prácticas en la mayoría de los casos hoy en día, y la forma preferida de atacar un evento es mediante el uso de .attachEvent (Internet Explorer) y addEventListener (el resto de los navegadores, como de costumbre).
Y finalmente ... Google no siempre es DIOS todopoderoso. Tienden a preocupar más que todo funcione en lugar de seguir los estándares todo el tiempo.