Los problemas del elemento <script> en Internet Explorer

¿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?

This entry was posted in (X)HTML, Javascript. Bookmark the permalink.