Niquelao - (X)HTML

Los problemas del elemento <script> en Internet Explorer

17 de March, 2008 por Maroto

¿Qué sucede cuando se quiere dotar a un documento (X)HTML de comportamiento desde el lado del cliente, en el navegador?. Es decir, que tenemos que hacer para ejecutar alguna función JavaScript externa en un navegador web.

La pregunta no parece complicada a simple vista. Simplemente con utilizar el elemento <script> en dicho documento, donde el valor del atributo src nos indique donde se encuentra el fichero, sería suficiente.

<script type="text/javascript" src="ruta_a/fichero.js"></script>

Sin embargo, si por un "descuido" olvidásemos la etiqueta de cierre de este elemento (</script>) comenzarían los problemas. IE (6 y 7) devuelven un documento en blanco, sin contenido. Si vemos el código fuente de la página, esta todo. Qué raro, ¿no?

En todo caso, la solución no es difícil. Cerramos el elemento y arreglado.

Si se trata de un documento XHTML, al ser nosotros unos tíos finos que nos gusta el código limpio y ordenado reducimos el código de llamada al código JavaScript mediante el uso de un elemento vacío, al igual que haríamos con contenedor de metainformación (<meta />), una imagen (<img />) o incluso con un vínculo a un recurso externo (<link />).

<script type="text/javascript" src="ruta_a/fichero.js" />

Sin embargo, a pesar de ser un documento válido, Volvemos a lo mismo, IE nos vuelve a sorprender con un documento en blanco. De nuevo, la solución es sencilla: utilizar la correspondiente etiqueta de cierre del elemento (</script>).

¿Eso es todo?. No, que va. Si todo el trabajo lo realizaramos de forma manual no sería mayor inconveniente que recordar en todos los documentos que tenemos que utilizar esta etiqueta de cierre. Lamentablemente, hoy en día las cosas son un poco más complicadas y es habitual que el contenido sea generado y procesado a partir de otros documentos XML, por lo que el tratamiento de ciertos elementos se realiza en cadena. Por ejemplo, a los elementos vacíos se les proporciona de forma automática su correspondiente etiqueta de cierre (<img></img>, <input></input>, <script></script>), lo que a fin de cuentas devuelve un código no muy limpio. Si por el contrario sucede que a todos los elementos vacíos se les aplica la barra de cierre (/) tendremos los problemas anteriormente descritos con nuestro navegador más querido.

La recomendación HTML 4.01 indica que la etiqueta de cierre del elemento <script> es requerida, pero de ahí a que IE se altere y deje de respirar va mucho. ¡Qué menos que pasarse a modo quirks!, ¿no creéis?

Categoría: (X)HTML, Javascript

Puedes hacer un seguimiento de los comentarios gracias al feed RSS 2.0. También podrías dejar un comentario, o enviar un trackback desde tu sitio.

Deja tu comentario

Los campos Nombre y Email son obligatorios

...y si quieres incluir un Gravatar.

Añádenos a...

Tags que destacamos en general

Creative Commons License Esta obra está bajo una licencia de Creative Commons.