현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.
개요
HTML <script>
요소는 HTML 또는 XHTML 문서내에서 실행 가능한 스크립트를 포함하거나 참조하기 위해 사용됩니다.
인라인 스크립트와 async
또는 defer
속성이 없는 스크립트는 브라우저가 페이지의 파싱을 진행하기전에 즉시 내려받고 실행됩니다.
- 컨텐츠 범주 메타데이터 컨텐츠, 플로우 컨텐츠, 구문 컨텐츠.
- 허용된 컨텐츠
text/javascript
와 같은 동적 스크립트 - 태그 생략 None, both the starting and ending tag are mandatory.
- 허용된 부모 요소 메타데이터 컨텐츠를 허용하는 모든 요소
또는 구문 컨텐츠를 허용하는 모든 요소. - DOM 인터페이스
HTMLScriptElement
속성
이 요소는 전역 속성을 포함합니다.
async
HTML5- 이 불리언 속성을 설정하는것은 브라우저가 가능하면 스크립트를 비동기적으로 실행하도록 하는것을 가리킵니다. 이것은 인라인 스크립트(src 속성이 없는 스크립트)에는 효과가 없습니다.
- See Browser compatibility for notes on browser support. See also Async scripts for asm.js.
src
- 이 속성은 외부 스크립트의 URI를 지정합니다. 이것은 문서에 직접 스크립트를 포함시키는것의 대안으로서 사용될수 있습니다.
src
속성이 지정된script
요소는 태그 내부에 스크립트를 가져서는 안됩니다. type
- 이 속성은 script 요소에 포함되거나 src 속성을 통해 참조된 코드의 스크립팅 언어를 식별합니다. 이것은 MIME 타입으로서 지정됩니다. 지원되는 MIME 타입의 예로는,
text/javascript
,text/ecmascript
,application/javascript
, andapplication/ecmascript
가 있습니다. 이 속성이 없을 경우, 스크립트는 JavaScript로써 다뤄집니다.
Note that in Firefox you can use advanced features such as let statements and other features in later JS versions, by usingtype=application/javascript;version=1.8
. Beware, however, that as this is a non-standard feature, this will most likely break support for other browsers, in particular Chromium-based browsers. - For how to include exotic programming languages, please read this article.
language
type
속성과 같이, 이 속성은 사용할 스크립팅 언어를 식별합니다. 하지만type
속성과는 달리, 이 속성의 가능한 값은 표준화 되지 않았습니다. 이 속성 대신에type
속성을 사용하세요.defer
- 이 불리언 값은 브라우저에게 문서가 파싱 된후에 스크립트가 실행되어야 한다는것을 가리킵니다. 이 기능은 아직 모든 주요 브라우저들에서 구현 되지는 않았기 때문에 작성자는 스크립트의 실행이 분명히 연기될것이라고 확신해서는 안됩니다.
defer
속성은src
속성이 없는 스크립트에서 사용할수 없습니다. Gecko 1.9.2 부터,src
속성이 없는 스크립트에서의defer
속성은 무시됩니다. 하지만 Gecko 1.9.1 에서는defer
속성이 적용된 인라인 스크립트도 연기됩니다. crossorigin
- Normal
script
tags will pass minimal information to thewindow.onerror
for scripts which do not pass the standard CORS checks. To allow error logging for sites which use a separate domain for static media, several browsers have enabled thecrossorigin
attribute for scripts using the same definition as the standard imgcrossorigin
attribute. Efforts to standardize this attribute are underway on the WHATWG mailing list.
예제
<!-- HTML4 and (x)HTML --> <script type="text/javascript" src="javascript.js"> <!-- HTML5 --> <script src="javascript.js"></script>
사양
사양 | 상태 | 주석 |
---|---|---|
HTML5 The definition of '<script>' in that specification. |
Recommendation | |
HTML 4.01 Specification The definition of '<script>' in that specification. |
Recommendation |
브라우저 호환성
기능 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 1.0 | 1.0 (1.7 or earlier) | (Yes) | (Yes) | (Yes) |
async 속성 | (Yes) | 3.6 (1.9.2) | 10 | Not supported | (Yes) |
defer 속성 | (Yes) | 3.5 (1.9.1) |
4 (follows a spec of its own) 10 (by the spec) |
Not supported | (Yes) |
crossorigin 속성 | 30.0 Chromium Bug 159566 | 13 (13) bug 696301 | Not supported | 12.50 | (Yes) |
기능 | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | (Yes) | 1.0 (1.0) | (Yes) | (Yes) | (Yes) |
async 속성 | (Yes) | 1.0 (1.0) | Not supported | ? | (Yes) |
defer 속성 | (Yes) | 1.0 (1.0) | Not supported | ? | (Yes) |
Async 지원
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).
Gecko-specific notes
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.