<script>

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

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

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
Elemnentos 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
WHATWG HTML Living Standard
The definition of '<script>' in that specification.
Living Standard Agrega el tipo module.
HTML5
The definition of '<script>' in that specification.
Recommendation  
HTML 4.01 Specification
The definition of '<script>' in that specification.
Recommendation  
Subresource Integrity
The definition of '<script>' in that specification.
Recommendation Agrega el atributo integrity.

Compatibilidad de navegadores

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 1.0 (1.7 or earlier)[2] (Yes) (Yes) (Yes)
async attribute (Yes)[1] 3.6 (1.9.2)[1] 10[1] No support[1] (Yes)[1]
defer attribute (Yes) 3.5 (1.9.1)

4[3]
10

No support (Yes)
crossorigin attribute 30.0 13 (13) No support 12.50 (Yes)[4]
integrity attribute 45.0 43 (43)     No support[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] No support[1] ?[1] (Yes)[1] (Yes)[1]
defer attribute (Yes) (Yes) 1.0 (1.0) No support ? (Yes) (Yes)
integrity attribute No support 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

Etiquetas y colaboradores del documento

 Colaboradores en esta página: raecillacastellana, ivandevp, alexander171294
 Última actualización por: raecillacastellana,