No funciona un código JavaScript en la web

Tamaño de letra:

¿Es necesario poner los comentarios en un tag <script>?

Código JavaScriptProgramando diariamente, en cada nueva jornada te puedes encontrar con casos particulares y extraños como el que hoy toca. Es curioso, muy curioso, pero un código JavaScript que he utilizado muchas veces, no funcionaba en una web, sin embargo, todos los demás códigos -en JavaScript y en dicha web- funcionaban correctamente. Para que te hagas una simple idea, en un documento HTML4, en el elemento <body> de dicha web, puse el siguiente código:

<script type="text/javascript">
 <!--
 document.write( "This code doesn't work! karmany, Why?");
 //-->
</script>

Y ese código no mostraba en pantalla nada de nada, se quedaba vacío. Le di muchísimas vueltas a la cabeza porque no tiene sentido, ¿por qué no funciona? Seguramente si tú tienes este problema, te hagas estas  primeras preguntas:

  1. ¿Tienes activado JavaScript en tu navegador? -Sí, sí que está activado.
  2. ¿Sólo es ese código el que da problemas o no funciona ningún código JavaScript? -Solo está el problema en ese código.

Después de volver a investigar (y por supuesto de perder tiempo), desenmascaré al supuesto culpable y para que no te pase a ti y tengas que perder un valioso tiempo, te muestro la explicación y al final la solución. Es curios@.

Buscando explicación W3C

No tiene razón de ser porque además lo he utilizado en otras webs, ¿por qué solo falla en esta? Tras unas cuantas pruebas, una de las veces decidí eliminar los comentarios del script y lo dejé así:

<script type="text/javascript">
  document.write( "This code doesn't work! karmany, Why?");
</script>

Y al probar veo que sí funciona. Umm, entonces, ¿el inconveniente está en los comentarios dentro de JavaScript? Me puse a leer un par de libros que tengo sobre HTML y JavaScript a ver qué dicen sobre los comentarios y en principio está bien hecho. Estos comentarios están hechos para navegadores antiguos no compatibles con el tag <script>.

Los comentarios HTML según la W3C son así:

<!-- esto es un comentario,
que ocupa dos líneas -->

Y, ¿por qué se pone esas dos barras // al final del código quedando //-->? (observa el código del principio)

La explicación: para que JavaScript no ejecute el tag -->, se ponen las dos barras // que son un comentario en javascript. Por lo tanto, el código está bien y vuelvo al principio de todo: ¿por qué narices falla?

Llamando a Sherlock Holmes

Pensé que podría ser algún espacio y reescribí de nuevo letra por letra el código en una sola línea: tampoco funcionó. ¿Pero si este simple código funciona de maravilla en millones de web? Comparé un archivo .html de una web que funcionaba con el mío para  ver los bytes, y los bytes ¡eran exactamente los mismos! Como ves, lo que puede parecer una tontería que has hecho millones de veces, llega a resultar incomprensible y misterioso.

Después de mucho investigar, y como he dicho antes, de ver que los comentarios en un elemento <script> se realizaban para compatibilidad con navegadores antiguos (me estoy refiriendo, por ejemplo, a navegadores como Netscape 1.0, ¡uff! me estoy yendo hacia 1995 o cerca...) que no entendían el tag <script>, esos comentarios en navegadores actuales pueden hacer el efecto contrario que deseamos y todo el código entre <script> y </script> puede llegar a ser considerado un comentario también.

Algunos autores consideran que poner comentarios dentro de <script></script> es una mala práctica, ya que los navegadores actuales entienden todos el tag <script>. Sin embargo, la W3C todavía menciona explícitamente los comentarios en el elemento <script> para HTML4, mientras que para HTML5, la W3C habla sobre restricciones del elemento <script> y menciona "escapar" algunos caracteres, por ejemplo, al usarlos dentro de un script como variables de cadena pero no veo que haga hincapié en esconder los comentarios de los "user agent".

Así que el código del inicio, en HTML5, podríamos dejarlo así:

<script>
 document.write( "This code works fine!");
</script>

Este código ya funcionó correctamente en la web y a partir de ahora me hace replantearme el uso de comentarios HTML en un script.

Última actualización: Domingo, 04 Mayo 2014
Comentarios  
0 # ale 13-09-2017 05:27
gracias, yo ahora intento hacer funcionar uno que esta entre
Responder | Responder con una citación | Citar
+1 # Nil 18-05-2014 10:49
Gracias por el consejo.
Responder | Responder con una citación | Citar
0 # Nil 09-05-2014 20:16
Hola, gracias por los tutoriales que entregas en esta pagina son muy utiles. Pero tengo una pregunta hay un programa traductor online que quiero modificar este programa extrae un dialogo y lo traduce por el traductor google y la traduccion aparece en el pograma queria saber como modificar la pagina web a la que se conecta el programa. He usado el reshacker pero no he encontrado nada que se paresca a una direccion web
Responder | Responder con una citación | Citar
0 # karmany 10-05-2014 08:10
Intenta con OllyDBG. Con Reshacker solo podrás ver las cadenas de texto que hay en la sección de recursos.
Responder | Responder con una citación | Citar
Escribir un comentario
Antes de publicar un comentario, usted debe aceptar nuestras condiciones de uso: Condiciones de uso. Debido al spam, todos los comentarios serán moderados. Normalmente se responde en unos minutos, refresca los comentarios para comprobarlo.



 
Visitas: 8489547