1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
---
title: <script>
slug: Web/HTML/Element/script
tags:
- Element
- HTML
- HTML scripting
- Reference
- Web
translation_of: Web/HTML/Element/script
---
<p>L'element <code><strong><script></strong></code> (o <em>element HTML script "Seqüència de comandaments"</em> ) s'utilitza per inserir o fer referència a un script executable dins d'un document <abbr title="Hypertext Markup Language">HTML</abbr> or <abbr title="Extensible Hypertext Markup Language">XHTML</abbr>.</p>
<p>Els scripts sense atributs <code>async</code> o <code>defer</code>, així com els scripts en línia, es capten i s'executen immediatament, abans que el navegador segueixi analitzant la pàgina.</p>
<p>El script ha de ser servit amb el tipus <code>text/javascript</code> MIME, però els navegadors són indulgents i només bloquejan si el script es serveix amb un tipus d'imatge (<code>image/*</code>), de vídeo (<code>video/*</code>), arxiu d'àudio (<code>audio/*</code>), o <code>text/csv</code>. Si el script és bloquejat, un {{event("error")}} s'envia a l'element, sinó s'envia un esdeveniment {{event("success")}}.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row"><a href="/en-US/docs/Web/HTML/Content_categories" title="HTML/Content_categories">Categories de contingut</a></th>
<td><a href="/en-US/docs/Web/HTML/Content_categories#Metadata_content" title="HTML/Content_categories#Metadata_content">Contingut Metadata</a>, <a href="/en-US/docs/Web/HTML/Content_categories#Flow_content" title="HTML/Content_categories#Flow_content">Contingut dinàmic</a>, <a href="/en-US/docs/Web/HTML/Content_categories#Phrasing_content" title="HTML/Content_categories#Phrasing_content">Phrasing content</a>.</td>
</tr>
<tr>
<th scope="row">Contingut permès</th>
<td>Script dinàmic com <code>text/javascript</code>.</td>
</tr>
<tr>
<th scope="row">Omissió de l'etiqueta</th>
<td>{{no_tag_omission}}</td>
</tr>
<tr>
<th scope="row">Elements pares permesos</th>
<td>Qualsevol element que accepti <a href="/en-US/docs/Web/HTML/Content_categories#Metadata_content" title="HTML/Content_categories#Metadata_content">contingut Metadata</a>, o qualsevol element que accepti <a href="/en-US/docs/Web/HTML/Content_categories#Phrasing_content">phrasing content</a>.</td>
</tr>
<tr>
<th scope="row">Interfície DOM</th>
<td>{{domxref("HTMLScriptElement")}}</td>
</tr>
</tbody>
</table>
<h2 id="Atributs">Atributs</h2>
<p>Aquest element inclou els <a href="/en-US/docs/Web/HTML/Global_attributes">atributs globals</a>.</p>
<dl>
<dt>{{htmlattrdef("async")}} {{HTMLVersionInline(5)}}</dt>
<dd>Establir aquest atribut booleà per indicar que el navegador hauria, si és possible, executar l'script de manera asincrònica. No té cap efecte sobre els scripts en línia (és a dir, scripts que no tenen l'atribut <strong>src</strong>).</dd>
<dd>Veure {{anch("Browser compatibility")}} <span id="result_box" lang="ca"><span>notes</span> <span>sobre el suport del</span> <span>navegador.</span></span> Veure <a href="/en-US/docs/Games/Techniques/Async_scripts">Async scripts per asm.js</a>.</dd>
<dt>{{htmlattrdef("integrity")}}</dt>
<dd>Conté metadades en línia que un agent d'usuari pot utilitzar per verificar que un recurs recuperat ha estat lliurat sense manipulació inesperada. Veure <a href="/en-US/docs/Web/Security/Subresource_Integrity">Integritat de subrecursos</a>.</dd>
<dt>{{htmlattrdef("src")}}</dt>
<dd>Aquest atribut especifica l'URI d'un script extern; això es pot utilitzar com una alternativa per a la incorporació d'un script directament dins d'un document. Si un element de script té un atribut <code>src</code> especificat, no ha de tenir un script incrustat dins les seves etiquetes.</dd>
<dt>{{htmlattrdef("type")}}</dt>
<dd>Aquest atribut identifica el llenguatge de script de codi incrustat dins d'un element de script o referenciat a través de l'atribut src de l'element. Això s'especifica com un tipus MIME; exemples dels tipus MIME suportats inclouen <code>text/javascript</code>, <code>text/ecmascript</code>, <code>application/javascript</code>, i <code>application/ecmascript</code>. Si aquest atribut està absent, el script és tractat com JavaScript.</dd>
<dd>Si el tipus <abbr title="Multi-purpose Internet Mail Extensions">MIME</abbr> especificat no és un tipus JavaScript escriviu el contingut incrustat dins les seves etiquetes, es tracta com un bloc de dades que no serà processada pel navegador.</dd>
<dd>Si el tipus especificat és mòdul el codi es tracta com un mòdul de JavaScript {{experimental_inline}}. Veure <a class="external external-icon" href="https://hacks.mozilla.org/2015/08/es6-in-depth-modules/">ES6 en Profunditat: Mòduls</a><br>
<br>
Recordeu que Firefox pot utilitzar les funcions avançades com ara deixar que les declaracions i altres característiques en les versions posteriors JS, mitjançant l'ús <code>type=application/javascript;version=1.8</code> {{Non-standard_inline}}. Aneu amb compte, però, que aquesta és una característica no estàndard, això farà que probablement s'interrompi el suport per a altres navegadors, en particular els navegadors basats en Chromium.</dd>
<dd><span id="result_box" lang="ca"><span>Per</span> <span>la manera d'incloure</span> <span>els</span> <em><span>llenguatges</span> <span>de programació</span> <span>exòtics</span></em><span>, llegir</span> <span>sobre</span></span> <a href="/en-US/Add-ons/Code_snippets/Rosetta">Rosetta</a>.</dd>
<dt>{{htmlattrdef("text")}}</dt>
<dd>Igual que l'atribut <code>textContent</code>, aquest atribut estableix el contingut de text de l'element. A diferència de l'atribut <code>textContent</code>, aquest atribut s'avalua com a codi executable després que el node s'insereix en el DOM.</dd>
<dt>{{htmlattrdef("language")}} {{Deprecated_inline}}</dt>
<dd>Igual que l'atribut <code>type</code>, aquest atribut identifica el llenguatge de script en ús. A diferència de l'atribut <code>type</code>, els possibles valors d'aquest atribut mai van ser estandarditzats. L'atribut <code>type</code> s'ha d'utilitzar al seu lloc</dd>
<dt>{{htmlattrdef("defer")}}</dt>
<dd>Aquest atribut booleà s'estableix per indicar a un navegador que el script està destinat a ser executat després que el document s'ha analitzat, però abans de activar {{event("DOMContentLoaded")}}. L'atribut <code>defer</code> no ha de ser utilitzat en els scripts que no tenen l'atribut <code>src</code>.</dd>
<dt>{{htmlattrdef("crossorigin")}}</dt>
<dd>Elements normals dels scripts passen un mínim d'informació a {{domxref('GlobalEventHandlers.onerror', 'window.onerror')}} pels scripts que no passen els controls estàndard <a href="/en-US/docs/HTTP_access_control">CORS</a> Per permetre el registre d'errors per als llocs que utilitzen un domini separat per als medis estàtics, utilitzeu aquest atribut.</dd>
</dl>
<h2 id="Exemples">Exemples</h2>
<pre class="brush: html"><!-- HTML4 and (x)HTML -->
<script type="text/javascript" src="javascript.js"></script>
<!-- HTML5 -->
<script src="javascript.js"></script>
</pre>
<h2 id="Especificacions">Especificacions</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificació</th>
<th scope="col">Estat</th>
<th scope="col">Comentari</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('HTML WHATWG', "scripting.html#the-script-element", "<script>")}}</td>
<td>{{Spec2('HTML WHATWG')}}</td>
<td>Afegeix el mòdul type</td>
</tr>
<tr>
<td>{{SpecName('HTML5 W3C', 'scripting-1.html#script', '<script>')}}</td>
<td>{{Spec2('HTML5 W3C')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('HTML4.01', 'interact/scripts.html#h-18.2.1', '<script>')}}</td>
<td>{{Spec2('HTML4.01')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('Subresource Integrity', '#htmlscriptelement', '<script>')}}</td>
<td>{{Spec2('Subresource Integrity')}}</td>
<td>Afegeix l'atribut integrity.</td>
</tr>
</tbody>
</table>
<h2 id="Navegadors_compatibles">Navegadors compatibles</h2>
<div>{{CompatibilityTable}}</div>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Característica</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
<tr>
<td>Suport bàsic</td>
<td>{{CompatChrome(1.0)}}</td>
<td>{{CompatGeckoDesktop("1.0")}}<sup>[2]</sup></td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
<tr>
<td>atribut async</td>
<td>{{CompatVersionUnknown}}<sup>[1]</sup></td>
<td>{{CompatGeckoDesktop("1.9.2")}}<sup>[1]</sup></td>
<td>10<sup>[1]</sup></td>
<td>15<sup>[1]</sup></td>
<td>{{CompatVersionUnknown}}<sup>[1]</sup></td>
</tr>
<tr>
<td>atribut defer</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoDesktop("1.9.1")}}<sup>[6]</sup></td>
<td>
<p>4<sup>[3]</sup><br>
10</p>
</td>
<td>{{CompatNo}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
<tr>
<td>atribut crossorigin</td>
<td>{{CompatChrome(30.0)}}</td>
<td>{{CompatGeckoDesktop("13")}}</td>
<td>{{CompatNo}}</td>
<td>12.50</td>
<td>{{CompatVersionUnknown}}<sup>[4]</sup></td>
</tr>
<tr>
<td>atribut integrity</td>
<td>{{CompatChrome(45.0)}}</td>
<td>{{CompatGeckoDesktop("43")}}</td>
<td> </td>
<td> </td>
<td>{{CompatNo}}<sup>[5]</sup></td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Característica</th>
<th>Android</th>
<th>Android Webview</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Mobile</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
<th>Chrome for Android</th>
</tr>
<tr>
<td>Suport bàsic</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoMobile("1.0")}}<sup>[2]</sup></td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
<tr>
<td>atribut async</td>
<td>{{CompatVersionUnknown}}<sup>[1]</sup></td>
<td>{{CompatVersionUnknown}}<sup>[1]</sup></td>
<td>{{CompatGeckoMobile("1.0")}}<sup>[1]</sup></td>
<td>{{CompatNo}}<sup>[1]</sup></td>
<td>{{CompatUnknown}}<sup>[1]</sup></td>
<td>{{CompatVersionUnknown}}<sup>[1]</sup></td>
<td>{{CompatVersionUnknown}}<sup>[1]</sup></td>
</tr>
<tr>
<td>atribut defer</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoMobile("1.0")}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
<tr>
<td>atribut integrity</td>
<td>{{CompatNo}}</td>
<td>{{CompatChrome(45.0)}}</td>
<td>{{CompatGeckoDesktop("43")}}</td>
<td> </td>
<td> </td>
<td> </td>
<td>{{CompatChrome(45.0)}}</td>
</tr>
</tbody>
</table>
</div>
<p>[1] En navegadors antics que no suporten l'atribut <code>async</code>, els scripts inserits en l'analitzador bloquegen l'analitzador; en scripts inserits s'executen els scripts de forma asncrònica en IE i WebKit, però de forma sincrònica a Opera i Firefox pre-4.0. En Firefox 4.0, la propietat DOM <code>async</code> es converteix per defecte en <code>true</code> pels scripts creats per script, per la qual cosa el comportament predeterminat coincideix amb el comportament de IE i WebKit.. En la sol·licitud d'inserció de scripts externs, els scripts s'executaran en l'ordre d'inserció en els navegadors on <code>document.createElement("script").async</code> estigui avaluat a <code>true</code> (com Firefox 4.0), establir <code>.async=false</code> en els scripts que desitjeu mantenir l'ordre. Mai crideu a <code>document.write()</code> des d'un script <code>async</code>. En Gecko 1.9.2, cridar a <code>document.write()</code> té un efecte impredictible. En Gecko 2.0, cridar a <code>document.write()</code> des d'un script <code>async</code> no té cap efecte (que no sigui la impressió d'un advertiment a la consola d'errors).</p>
<p>[2] A partir de Gecko 2.0 {{geckoRelease ( "2.0")}}, inserir elements de script que s'han creat en cridar a <code>document.createElement("script")</code> al DOM ja no imposa l'execució en ordre d'inserció. Aquest canvi permet a Gecko complir adequadament amb l'especificació HTML5. Perquè els scripts externs inserits en scripts s'executin en el seu ordre d'inserció, establiu <code>.async=false</code> en ells.</p>
<p>A més, els elements {{HTMLElement ("script")}} dins d'elements {{HTMLElement ("iframe")}}, {{HTMLElement ("noembed")}} i {{HTMLElement ("noframes")}} són ara executats, per les mateixes raons.</p>
<p>[3] En les versions anteriors a Internet Explorer 10 Trident implementava <code><script></code> per una especificació propietària. Des de la versió 10 s'ajusta a l'especificació W3C.</p>
<p>[4] L'atribut <code>crossorigin</code> es va implementar en WebKit en {{WebKitBug(81438)}}.</p>
<p>[5] {{WebKitBug(148363)}} seguiment de l'implementació a WebKit el Subresource Integrity (que inclou l'atribut <code>integrity</code>).</p>
<p>[6] Des Gecko 1.9.2 {{geckoRelease ("1.9.2")}}, l'atribut <code>defer</code> és ignorat en scripts que no tenen l'atribut <code>src</code>. No obstant això, en Gecko 1.9.1 {{geckoRelease ("1.9.1")}} els scripts en línia es diferiran si s'estableix l'atribut <code>defer</code>.</p>
<h2 id="Veure">Veure</h2>
<ul>
<li>{{domxref("document.currentScript")}}</li>
<li><a href="http://pieisgood.org/test/script-link-events/">Gràfic de compatibilitat d'esdeveniments de node <script> i <link> de Ryan Grove</a></li>
</ul>
<p>{{HTMLRef}}</p>
|