Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

<script>

Résumé

L'élément HTML <script> est utilisé pour intégrer ou faire référence à un script exécutable au sein d'un document HTML ou XHTML.

Les scripts sans attribut async ou defer sont chargés et exécutés immédiatement avant que le navigateur continue l'analyse de la page.

Attributs

Cet élément inclue les attributs globaux.

async HTML5
Définissez cet attribut booléen afin d'indiquer si le navigateur doit, dans la mesure du possible, exécuter les scripts de manière asynchrone. Cela n'a pas d'effet sur les scripts n'ayant pas d'attribut src. Dans les navigateurs plus anciens ne supportant pas l'attribut async, les scripts insérés par d'autres scripts bloquent le parseur. Dans ces navigateurs-là, Internet Explorer et Webkit exécutent ces scripts insérés par d'autres scripts de manière asynchrone alors que les versions d'Opera et celles de Firefox (avant la version 4.0) les exécutaient de manière synchrone. Dans Firefox 4.0, la valeur par défaut de la propriété DOM async est  true pour les scripts générés par des scripts, son comportement par défaut correspondant alors avec celui de IE et WebKit. 
Afin que les scripts insérés via des scripts externes s'exécutent dans l'ordre de leur insertion dans les navigateurs où la valeur de document.createElement("script").async est true (comme Firefox 4.0), passez la valeur .async=false aux scripts dont vous souhaitez conserver l'ordre. N'appelez jamais la méthode document.write() depuis un script async. Dans Gecko 1.9.2, appeler cette méthode depuis un tel script a un effet imprévisible. Dans Gecko 2.0, appeler cette méthode depuis un tel script n'a pas d'effet (en dehors d'afficher un message d'avertissement dans la console).
src
Cet attribut définit l'URI d'un script externe. Cela peut être utilisé pour insérer des scripts autrement qu'en les insérant à même le document. Les éléments script avec un attribut src défini ne doivent pas avoir de script compris dans leurs balises.
type
Cet attribut définit le langage de script utilisé par un script au sein d'un élément script ou dont la référence est faite via l'attribut src. Ceci est défini comme un type MIME. Des exemples de types MIME supportés sont text/javascript, text/ecmascript, application/javascript et application/ecmascript. Si cet attribut est absent, le script est interprété comme étant en JavaScript.
language
Comme l'attribut type, cet attribut spécifie le langage de script utilisé. Cependant, contrairement à l'attribut type les valeurs possibles de cet attribut n'ont jamais été normalisées. Il est recommandé d'utiliser l'attribut type plutôt que celui-là.
defer
Cet attribut booléen permet d'indiquer au navigateur si le script doit être exécuté après l'analyse du document. Étant donné que cette fonctionnalité n'a pas été implémentée par les principaux navigateurs en dehors de Firefox, les utilisateurs ne devraient pas avoir de certitude quant au fait que l'exécution du script soit vraiment reportée. Il ne faut jamais appeler la méthode document.write() depuis un script dont l'exécution est reportée de cette manière (depuis Gecko 1.9.2, cela détruira le document). Cet attribut ne doit pas être utilisé pour des scripts n'ayant pas l'attribut src. Depuis  Gecko 1.9.2, l'attribut defer est ignoré sur les scripts sans attribut src. Cependant, avec Gecko 1.9.1 même les scripts en page sont exécutés de manière tardive si leur attribut defer est à true.
crossorigin
Les balises de script classiques enverront un minimum d'informations à window.onerror en ce ce qui concernent les scripts ne respectant pas les contrôles standard du CORS. Afin de disposer de plus de renseignements sur les erreurs pour les sites utilisant des domaines séparés pour des documents statiques, plusieurs navigateurs utilisent l'attribut crossorigin pour les scripts en utilisant la même définition que pour l'attribut crossorigin pour les images. Les efforts pour la standardisation de cet attribut sont en cours sur la liste de distribution du WHATWG.

Exemples

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

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

Spécifications

Spécification Statut Commentaires
HTML5
La définition de '<script>' dans cette spécification.
Recommendation  
HTML 4.01 Specification
La définition de '<script>' dans cette spécification.
Recommendation  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple 1.0 1.0 (1.7 ou moins) (Oui) (Oui) (Oui)
Attribut async (Oui) 3.6 (1.9.2) 10 Pas de support (Oui)
Attribut defer (Oui) 3.5 (1.9.1)

4 (follows a spec of its own)

10 (by the spec)

Pas de support (Oui)
Attribut crossorigin WebKit bug 81438 13 (13) bug 696301 Pas de support 12.50 WebKit bug 81438
Fonctionnalité Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) 1.0 (1.0) (Oui) (Oui) (Oui)
Attribut async (Oui) 1.0 (1.0) Pas de support ? (Oui)
Attribut defer (Oui) 1.0 (1.0) Pas de support ? (Oui)

 

Support de l'attribut async

Les navigateurs plus anciens ne supportent pas l'attribut async attribute, les scripts insérés par le parseur bloquent le parseur, les scripts insérés par les script s'exécutent de façon asyncrhone dans IE et WebKit mais de façon synchrone dans Opera et dans les versions de Firefox inférieures à Firefox 4.0. Dans Firefox 4.0, la propriété DOM async a true comme valeur par défaut pour les scripts créés par les scripts et le comportement par défaut rejoint celui de IE et WebKit. Afin qu'un script inséré par un script externe soit exécuté dans l'ordre d'insertion dans les navigateurs où document.createElement("script").async vaut true (comme Firefox 4.0), il faut mettre .async=false dans les scripts pour lesquels on veut conserver l'ordre. Il ne faut jamais appeler document.write() depuis un script asynchrone. Dans Gecko 1.9.2, l'appel de document.write() entraînait un résultat imprévisible. Avec Gecko 2.0, l'appel de document.write() depuis un script asynchrone n'a aucun effet (à part un avertissement affiché dans les erreurs de la console).

Notes spécifiques à Gecko

À partir de Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1), insérer des éléments de script ayant été créés via l'appel de document.createElement("script") dans le DOM n'implique pas que l'ordre de l'exécution suive celui des insertions. Ce changement permet à Gecko de mieux se conformer à la spécification HTML5. Afin que les scripts insérés par des scripts externes s'exécutent en suivant l'ordre de leur insertion, réglez leur attribut async à false.

Les éléments <script> contenus dans des éléments <iframe>, <noembed>  ou <noframes> sont maintenant également exécutés pour les mêmes raisons.

Voir également

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : opii93, SphinxKnight, tregagnon, Goofy
 Dernière mise à jour par : opii93,