<script>

Resumen

El elemento HTML Script (<script>) se utiliza para insertar o hacer referencia a un script ejecutable dentro de un documento HTML o XHTML.

Los scripts sin atributo async o defer, as铆 como las secuencias de comandos en l铆nea, son interpretados y ejecutados inmediatamente, antes de que el navegador contin煤e procesando la p谩gina.

Content categories Metadata content, Flow content, Phrasing content.
Contenido permitido Script din谩mico tal como text/javascript.
Omision de etiquetas None, both the starting and ending tag are mandatory.
Elementos padre permitidos Cualquier elemento que acepte metadata content, o cualquier elemento que acepte phrasing content.
Interfaz DOM HTMLScriptElement (en-US)

Atributos

Este elemento contiene los atributos globales.

async HTML5
Establece este atributo booleano para indicar al navegador, si es posible, ejecutar el c贸digo asincr贸nicamente. Esto no afecta a los scripts escritos dentro de la etiqueta (es decir a aquellos que no tienen el atributo src).
Ver Browser compatibility para notas acerca de compatibilidad. Ver tambien Scripts asincr贸nicos para asm.js.
integrity
Contiene informaci贸n de metadatos que es usada por el user agent del navegador para verificar el recurso captado fue entregado libre de manipulaci贸n inesperada. Ver Subresource Integrity.
src
Este atributo especifica la URI del script externo; este puede ser usado como alternativa a scripts embebidos directamente en el documento. Si el script tiene el atributo src, no deber铆a tener c贸digo dentro de la etiqueta.
type
Este atributo identifica el lenguaje de scripting en que est谩 escrito el c贸digo embebido dentro de la etiqueta script, o referenciada utilizando el atributo src. Los valores posibles est谩n especificados como un MIME type (tipo MIME). 
Algunos ejemplos de tipos MIME que pueden ser utilizados son: text/javascript, text/ecmascript, application/javascript, y application/ecmascript. Si el atributo se encuentra ausente, el valor por defecto ser谩 un script JavaScript.
Si el tipo MIME especificado no es un tipo JavaScript, el contenido embebido dentro de la etiqueta script es tratado como un bloque de datos que no ser谩 procesado por el navegador.
Si el tipo especificado es module, el c贸digo es tratado como un m贸dulo JavaScript . Ver ES6 in Depth: Modules.
Nota: en Firefox puedes usar caracter铆sticas avanzadas tales como let statements y otras caracter铆sticas de la 煤ltima versi贸n de JS, usando type=application/javascript;version=1.8 . Ten cuidado!, esto no es una caracter铆stica est谩ndar, es decir, probablemente genere conflictos con otros navegadores, en particular aquellos basados en Chromium.
Para incluir lenguajes de programaci贸n ex贸ticos, lee acerca de Rosetta.
text
Este atributo act煤a como el atributo textContent, establece el texto contenido del elemento. Pero a diferencia de textContent, este atributo se eval煤a como ejecutable luego de ser insertado como nodo en el DOM.
language
Este atributo act煤a como el atributo type, identifica el tipo de lenguaje que se utiliza. A diferencia del atributo type, los posibles valores de este atributo nunca fueron estandarizados. El atributo type debe ser utilizado en lugar de language.
defer
Este atributo establece si el script debe ser ejecutado luego de que el documento entero sea analizado. Dado que esta funci贸n a煤n no fue implementada por todos los navegadores relevantes, los autores no deber铆an asumir que el script realmente ser谩 ejecutado luego de la carga y analisis del documento.  Desde Gecko 1.9.2 el atributo defer es ignorado en los scripts que no tienen el atributo src. Sin embargo, en Gecko 1.9.1 incluso se difieren los scripts escritos dentro de la etiqueta.
crossorigin
Elementos normales script pasan informaci贸n m铆nima al window.onerror para scripts que no pasan las revisiones del est谩ndar CORS. Para permitir registrar errores en los sitios que usan dominios separados para recursos est谩ticos, usar este atributo.

Ejemplos

<!-- HTML4 y (x)HTML -->
<script type="text/javascript" src="javascript.js"></script>

<!-- HTML5 -->
<script src="javascript.js"></script>

Especificaciones

Especificaci贸n Estado Comentario
HTML Living Standard
La definici贸n de '<script>' en esta especificaci贸n.
Living Standard Agrega el tipo module.
HTML5
La definici贸n de '<script>' en esta especificaci贸n.
Recommendation  
HTML 4.01 Specification
La definici贸n de '<script>' en esta especificaci贸n.
Recommendation  
Subresource Integrity
La definici贸n de '<script>' en esta especificaci贸n.
Recommendation Agrega el atributo integrity.

Compatibilidad de navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Caracter铆stica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 1.0 (1.7 o anterior)[2] (Yes) (Yes) (Yes)
async attribute (Yes)[1] 3.6 (1.9.2)[1] 10[1] Sin soporte[1] (Yes)[1]
defer attribute (Yes) 3.5 (1.9.1)

4[3]
10

Sin soporte (Yes)
crossorigin attribute 30.0 13 (13) Sin soporte 12.50 (Yes)[4]
integrity attribute 45.0 43 (43)     Sin soporte[5]
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support (Yes) (Yes) 1.0 (1.0)[2] (Yes) (Yes) (Yes) (Yes)
async attribute (Yes)[1] (Yes)[1] 1.0 (1.0)[1] Sin soporte[1] ?[1] (Yes)[1] (Yes)[1]
defer attribute (Yes) (Yes) 1.0 (1.0) Sin soporte ? (Yes) (Yes)
integrity attribute Sin soporte 45.0 43 (43)       45.0

[1] In older browsers that don't support the async attribute, parser-inserted scripts block the parser; script-inserted scripts execute asynchronously in IE and WebKit, but synchronously in Opera and pre-4.0 Firefox. In Firefox 4.0, the async DOM property defaults to true for script-created scripts, so the default behavior matches the behavior of IE and WebKit. To request script-inserted external scripts be executed in the insertion order in browsers where the document.createElement("script").async evaluates to true (such as Firefox 4.0), set .async=false on the scripts you want to maintain order. Never call document.write() from an async script. In Gecko 1.9.2, calling document.write() has an unpredictable effect. In Gecko 2.0, calling document.write() from an async script has no effect (other than printing a warning to the error console).

[2] Starting in Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1), inserting script elements that have been created by calling document.createElement("script") into the DOM no longer enforces execution in insertion order. This change lets Gecko properly abide by the HTML5 specification. To make script-inserted external scripts execute in their insertion order, set .async=false on them.

Also, <script> elements inside <iframe>, <noembed> and <noframes> elements are now executed, for the same reasons.

[3] In versions prior to Internet Explorer 10 Trident implemented <script> by a proprietary specification. Since version 10 it conforms to the W3C specification.

[4] The crossorigin attribute was implemented in WebKit in WebKit bug 81438.

[5] WebKit bug 148363 tracks WebKit implementation of Subresource Integrity (which includes the integrity attribute).

Ver tambi茅n