<script>

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

개요

HTML <script> 요소는 HTML 또는 XHTML 문서내에서 실행 가능한 스크립트를 포함하거나 참조하기 위해 사용됩니다.

인라인 스크립트와 async 또는 defer 속성이 없는 스크립트는 브라우저가 페이지의 파싱을 진행하기전에 즉시 내려받고 실행됩니다.

속성

이 요소는 전역 속성을 포함합니다.

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, and application/ecmascript가 있습니다. 이 속성이 없을 경우, 스크립트는 JavaScript로써 다뤄집니다.

Note that in Firefox you can use advanced features such as let statements and other features in later JS versions, by using type=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 the window.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 the crossorigin attribute for scripts using the same definition as the standard img crossorigin 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)

 (WebKit bug 81438)

기능 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.

같이 보기

문서 태그 및 공헌자

 이 페이지의 공헌자: mooyoul, azunyan3
 최종 변경: mooyoul,