Tag Script en JavaScript y HTML
Douglas Crockford
www.crockford.com
El tag <script>
El tag script tiene dos propósitos:
- Identifica un bloque de script en la página.
- Carga un archivo de script.
Lo que hace depende de la presencia del atributo src. Un tag cerrado </script> es necesario en cualquier caso.
Un tag script contiene estos atributos:
src=”url“
El atributo src es opcional. Si está presente, entonces su valor es un url que identifica un archivo .js. La carga y el procesamiento de la página se detiene mientras el navegador busca, compila y ejecuta el archivo. El contenido entre <script src=”url“> y </script> debe estar en blanco.
Si el atributo src no está presente, entonces el texto contenido entre el <script> y </script> es compilado y ejecutado. El script no debe contener la secuencia
</
porque podría ser confundido con el </script>. Insertar una barra diagonal inversa entre < y / en las secuencias evita el problema.
<\/
La barra diagonal inversa será ignorada por el compilador del JavaScript.
No utilices el hack <!– //–> con los scripts. Esto fue diseñado para prevenir que los scripts aparecieran como texto en la primera generación de navegadores Netscape 1 y Mosaic. Esto no ha sido necesario desde hace muchos años. <!– //–> se supone que señala un comentario HTML. Los comentarios deben ser ignorados, no compilados y ejecutados. Además, los comentarios HTML no deben incluir –, si un script tiene este valor se presenta un error de HTML.
language=”javascript”
Este atributo está obsoleto. Fue usado para seleccionar otros lenguajes de programación y versiones específicas de JavaScript. Tú no lo necesitas. No lo utilices.
type=”text/javascript”
Este atributo es opcional. Desde Netscape 2, el lenguaje predeterminado de programación en todos los navegadores ha sido JavaScript. En XHTML, este atributo es requerido pero innecesario. En HTML, es mejor no utilizarlo. El navegador sabe qué hacer.
defer
Este atributo estuvo diseñado para alterar la sincronización de los componentes cargando en las páginas. No está del todo soportado y no debe ser utilizado.
for=”name” event=”name“
Este atributo es una función de Microsoft para declarar controladores de eventos. No es necesario. No lo utilices.
Posicionamiento
<script src=”url“></script> bloqueará la descarga de otros componentes de la página hasta que el script haya sido buscado, compilado y ejecutado. Es mejor llamar al script tan tarde como sea posible, para que así la carga de imágenes y otros componentes no se vean retrasados. Esto puede mejorar el tiempo de carga real y percibido de la página. Así que normalmente es mejor hacer todos los <script src=”url“></script> la última función antes del </body>. Un <script> en la página no tiene un impacto significante en el tiempo de carga.
Si un script está definiendo funciones o datos que son utilizados por otras funciones, entonces la definición debe realizarse antes de su uso. Así que los scripts definidos deben venir antes de los scripts de uso.
document.write
El método document.write provee una forma de incorporar secuencias en el contenido HTML de la página. Hay mejores formas de hacer eso, como .innerHTML y .createElement o patrones de clonación HTML. Debe evitarse el uso de document.write.
document.write es impudentemente dependiente de la sincronización. Si document.write es llamado antes del evento onload, agrega o inserta texto en la página. Si es llamado después del onload, reemplaza completamente la página, destruyendo lo que vino antes.
document.write alienta una mala estructura, en la cual el script y el marcador se entremezclan. Una estructura limpiadora tiene una interacción mínima entre el marcador y el script.
El Script Tag Hack
El atributo src, sorprendentemente, no es limitado por la Misma Política de Origen. Esto significa que un elemento de script puede ser creado, el cual puede ir a cualquier servidor, buscar un script y ejecutarlo. Si el script causa la entrega de los datos codificados JSON, entonces esto es algo muy útil. Desafortunadamente, no hay ninguna forma de limitar el script o inspeccionarlo antes de que se ejecute. Se ejecuta con la misma autoridad que los scripts de la página. Así que el script puede acceder y usar sus cookies. Puede acceder al servidor originario usando la autorización del usuario. Puede inspeccionar el DOM y el objeto global de JavaScript, y enviar cualquier información que encuentra a cualquier parte del mundo. El Script Tag Hack no es seguro y debe ser evitado.