<script>: ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑкÑипÑов
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
* Some parts of this feature may have varying levels of support.
HTML-ÑÐ»ÐµÐ¼ÐµÐ½Ñ <script> иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð²ÑÑÑÐ°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ подклÑÑÐµÐ½Ð¸Ñ Ð¸ÑполнÑемого JavaScript кода. ÐÐ»ÐµÐ¼ÐµÐ½Ñ <script> Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ñ Ð´ÑÑгими ÑзÑками, Ñакими как GLSL Ð¾Ñ WebGL.
| Content categories | ÐеÑаданнÑе, ÐоÑоковÑй конÑенÑ, ФÑазовÑй конÑенÑ. |
|---|---|
| ÐопÑÑÑимÑй конÑÐµÐ½Ñ | ÐинамиÑеÑкий ÑкÑипÑ, иÑполÑзÑÑ Ð°ÑÑибÑÑ text/javascript. |
| ÐÑопÑÑк Ñегов | ÐеÑ. ÐÑкÑÑваÑÑий и закÑÑваÑÑий Ñеги обÑзаÑелÑÐ½Ñ |
| ÐопÑÑÑимÑе ÑодиÑели | ÐÑбÑе ÑлеменÑÑ Ð² коÑоÑÑÑ ÑазÑеÑÐµÐ½Ñ Ð¼ÐµÑаданнÑе или ÑÑазовÑй конÑÐµÐ½Ñ |
| ÐопÑÑÑимÑе ARIA-Ñоли | Ð½ÐµÑ |
| DOM-инÑеÑÑÐµÐ¹Ñ | HTMLScriptElement |
ÐÑÑибÑÑÑ
ÐÑÐ¾Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑе аÑÑибÑÑÑ.
async-
ÐÑо логиÑеÑкий аÑÑибÑÑ, ÑказÑваÑÑий бÑаÑзеÑÑ, еÑли возможно, загÑÑжаÑÑ ÑкÑипÑ, ÑказаннÑй в аÑÑибÑÑе
src, аÑÐ¸Ð½Ñ Ñонно.ÐÑедÑпÑеждение: ÐÑÑибÑÑ
asyncне бÑÐ´ÐµÑ Ð¾ÐºÐ°Ð·ÑваÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ ÑÑÑекÑа, еÑли аÑÑибÑÑsrcоÑÑÑÑÑÑвÑеÑ. ÐбÑÑно бÑаÑзеÑÑ Ð·Ð°Ð³ÑÑжаÑÑ<script>ÑÐ¸Ð½Ñ Ñонно, (Ñ.е.async="false") во вÑÐµÐ¼Ñ ÑазбоÑа докÑменÑа. ÐинамиÑеÑки вÑÑавленнÑй<script>(иÑполÑзÑÑ, напÑимеÑ,document.createElement) по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð±ÑаÑзеÑом аÑÐ¸Ð½Ñ Ñонно, поÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ ÑÐ¸Ð½Ñ Ñонной загÑÑзки (Ñ.е. когда ÑкÑипÑÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð² поÑÑдке Ð¸Ñ Ð²ÑÑавки) ÑкажиÑеasync="false". crossorigin-
ÐбÑÑнÑе ÑлеменÑÑ Ñега
scriptпеÑедаÑÑ Ð¼Ð°Ð»Ð¾ инÑоÑмаÑии вwindow.onerrorÐ´Ð»Ñ ÑкÑипÑов, коÑоÑÑе не пÑÐ¾Ñ Ð¾Ð´ÑÑ Ð¿ÑовеÑÐºÑ CORS. ЧÑÐ¾Ð±Ñ ÑазÑеÑиÑÑ Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ жÑÑнала оÑибок ÑайÑа, коÑоÑÑе иÑполÑзÑÑÑ Ð¾ÑделÑнÑй домен Ð´Ð»Ñ ÑÑаÑиÑеÑÐºÐ¸Ñ Ñайлов (напÑимеÑ, изобÑажение, видео-Ñайл, CSS-ÑÑили или Javascript-код), иÑполÑзÑйÑе аÑÑибÑÑcrossorigin. ÐоÑмоÑÑиÑе ÑÑаÑÑÑ Â«Ð½Ð°ÑÑÑойки аÑÑибÑÑов CORS» Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ наглÑдного обÑÑÑÐ½ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ допÑÑÑимÑÑ Ð°ÑгÑменÑов. defer-
ÐÑо логиÑеÑкий аÑÑибÑÑ, ÑказÑваÑÑий бÑаÑзеÑÑ, ÑÑо ÑкÑÐ¸Ð¿Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ вÑполнÑÑÑÑÑ Ð¿Ð¾Ñле ÑазбоÑа докÑменÑа, но до ÑобÑÑиÑ
DOMContentLoaded. СкÑипÑÑ Ñ Ð°ÑÑибÑÑомdeferбÑдÑÑ Ð¿ÑедоÑвÑаÑаÑÑ Ð·Ð°Ð¿ÑÑк ÑобÑÑиÑDOMContentLoadedдо ÑÐµÑ Ð¿Ð¾Ñ, пока ÑкÑÐ¸Ð¿Ñ Ð½Ðµ загÑÑзиÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¸ не завеÑÑиÑÑÑ ÐµÐ³Ð¾ иниÑиализаÑиÑ.ÐÑедÑпÑеждение: ÐÑÑибÑÑ
deferне бÑÐ´ÐµÑ Ð¾ÐºÐ°Ð·ÑваÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ ÑÑÑекÑа, еÑли аÑÑибÑÑsrcоÑÑÑÑÑÑвÑеÑ. ЧÑÐ¾Ð±Ñ Ð´Ð¾ÑÑигнÑÑÑ Ñакого же ÑÑÑекÑа Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки вÑÑавленнÑÑ ÑкÑипÑов иÑполÑзÑйÑеasync=false. СкÑипÑÑ Ñ Ð°ÑÑибÑÑомdeferбÑдÑÑ Ð²ÑполнÑÑÑÑÑ Ð² Ñом поÑÑдке, в коÑоÑом они поÑвилиÑÑ Ð¿Ñи ÑазбоÑе докÑменÑа. integrity-
ÐÑÐ¾Ñ Ð°ÑÑибÑÑ ÑодеÑÐ¶Ð¸Ñ Ð²ÑÑÑоеннÑе меÑаданнÑе, коÑоÑÑе Ð°Ð³ÐµÐ½Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ (бÑаÑзеÑ) Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки Ñого, ÑÑо вÑбÑаннÑй ÑеÑÑÑÑ Ð±Ñл доÑÑавлен без непÑедвиденнÑÑ Ð¼Ð°Ð½Ð¸Ð¿ÑлÑÑий. СмоÑÑиÑе ЦелоÑÑноÑÑÑ ÑÑбÑеÑÑÑÑа.
nomodule-
ÐÑлевÑй аÑÑибÑÑ, коÑоÑÑй ÑÑÑанавливаеÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑкÑÐ¸Ð¿Ñ Ð½Ðµ вÑполнÑлÑÑ Ð² бÑаÑзеÑÐ°Ñ , поддеÑживаÑÑÐ¸Ñ ES6-модÑли (англ.). Таким обÑазом, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ Ð¿ÑедоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑезеÑвнÑÑ ÑÑенаÑиев в ÑÑаÑÑÑ Ð±ÑаÑзеÑÐ°Ñ , коÑоÑÑе не поддеÑживаÑÑ Ð¼Ð¾Ð´ÑлÑнÑй код JavaScript.
nonce-
ÐÑипÑогÑаÑиÑеÑкий одноÑазовÑй Ð½Ð¾Ð¼ÐµÑ (номеÑ, иÑполÑзÑемÑй один Ñаз) Ð´Ð»Ñ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð²ÑÑÑоеннÑÑ ÑкÑипÑов в белÑй ÑпиÑок в script-src Content-Security-Policy. СеÑÐ²ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ генеÑиÑоваÑÑ ÑникалÑное одноÑазовое знаÑение каждÑй Ñаз, когда он пеÑÐµÐ´Ð°ÐµÑ Ð¿Ð¾Ð»Ð¸ÑикÑ. ÐÑайне важно пÑедоÑÑавиÑÑ Ð¾Ð´Ð½Ð¾ÑазовÑй номеÑ, коÑоÑÑй нелÑÐ·Ñ ÑгадаÑÑ, поÑколÑÐºÑ Ð² пÑоÑивном ÑлÑÑае Ð¾Ð±Ñ Ð¾Ð´ полиÑики ÑеÑÑÑÑа ÑвлÑеÑÑÑ ÑÑивиалÑнÑм.
src-
ÐпÑеделÑÐµÑ URI внеÑнего ÑкÑипÑа; ÑвлÑеÑÑÑ Ð°Ð»ÑÑеÑнаÑивой вÑÑÑÐ°Ð¸Ð²Ð°Ð½Ð¸Ñ ÑкÑипÑа непоÑÑедÑÑвенно в докÑменÑ.
ÐÑедÑпÑеждение: ÐÑли Ñ ÑлеменÑа
scriptбÑÐ´ÐµÑ Ñказан аÑÑибÑÑsrc, Ñо он не должен имеÑÑ Ð²ÑÑÑоеннÑй ÑкÑÐ¸Ð¿Ñ Ð¼ÐµÐ¶Ð´Ñ Ñегами. text-
Ðак и аÑÑибÑÑ
textContent, ÑÑÐ¾Ñ Ð°ÑÑибÑÑ Ð·Ð°Ð´Ð°ÐµÑ ÑекÑÑовое ÑодеÑжимое ÑлеменÑа. Ðднако, в оÑлиÑие Ð¾Ñ Ð°ÑÑибÑÑаtextContent, ÑÑÐ¾Ñ Ð°ÑÑибÑÑ Ð¾ÑениваеÑÑÑ ÐºÐ°Ðº иÑполнÑемÑй код поÑле Ñого, как Ñзел вÑÑавлен в DOM. type-
ÐÑÐ¾Ñ Ð°ÑÑибÑÑ ÑказÑÐ²Ð°ÐµÑ Ñип пÑедÑÑавленного ÑкÑипÑа. ÐнаÑение ÑÑого аÑÑибÑÑа бÑÐ´ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² одной из ÑледÑÑÑÐ¸Ñ ÐºÐ°ÑегоÑий:
- ÐÑÑибÑÑ Ð½Ðµ ÑÑÑановлен (по-ÑмолÑаниÑ), пÑÑÑÐ°Ñ ÑÑÑока или ÑÑÑановлен как MIME-Ñип JavaScript
- : ÐбознаÑаеÑ, ÑÑо ÑкÑÐ¸Ð¿Ñ ÑвлÑеÑÑÑ "клаÑÑиÑеÑким ÑкÑипÑом", ÑодеÑжаÑим JavaScript-код. РекомендÑеÑÑÑ Ð½Ðµ ÑказÑваÑÑ MIME-Ñип, а пÑопÑÑкаÑÑ Ð°ÑÑибÑÑ Ð²Ð¾Ð¾Ð±Ñе. MIME-ÑÐ¸Ð¿Ñ JavaScript ÑÐºÐ°Ð·Ð°Ð½Ñ Ð² ÑпеÑиÑикаÑии.
module- : Ðанное знаÑение даÑÑ Ð±ÑаÑзеÑÑ Ð¸Ð½ÑÑÑÑкÑиÑ, ÑÑо код ÑвлÑеÑÑÑ JavaScript-модÑлем.
ÐбÑабоÑка ÑодеÑжимого ÑкÑипÑа оÑложеннаÑ.
ÐÑÑибÑÑÑ
charsetиdeferигноÑиÑÑÑÑÑÑ. ÐÐ»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии по иÑполÑзованиÑmodule, ÑмоÑÑиÑе ÑÑководÑÑво по JavaScript-модÑлÑм. РоÑлиÑие Ð¾Ñ ÐºÐ»Ð°ÑÑиÑеÑÐºÐ¸Ñ ÑкÑипÑов, модÑли ÑÑебÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ CORS-пÑоÑокола Ð´Ð»Ñ ÐºÑоÑÑдоменнÑÑ Ð·Ð°Ð¿ÑоÑов.
- : Ðанное знаÑение даÑÑ Ð±ÑаÑзеÑÑ Ð¸Ð½ÑÑÑÑкÑиÑ, ÑÑо код ÑвлÑеÑÑÑ JavaScript-модÑлем.
ÐбÑабоÑка ÑодеÑжимого ÑкÑипÑа оÑложеннаÑ.
ÐÑÑибÑÑÑ
importmap- : Ðанное знаÑение ÑигнализиÑÑÐµÑ Ð¾ Ñом, ÑÑо ÑодеÑжимое Ñега ÑвлÑеÑÑÑ ÑловаÑÑм импоÑÑов. СловаÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑов - ÑÑо JSON-обÑекÑ, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð°Ð»Ð¸Ð°Ñов пÑи импоÑÑе JavaScript-модÑлей.
- ÐÑбое дÑÑгое знаÑение: ÐÑÑÑоеннÑй конÑÐµÐ½Ñ Ð¾Ð±ÑабаÑÑваеÑÑÑ ÐºÐ°Ðº блок даннÑÑ
, коÑоÑÑй не бÑÐ´ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ Ð±ÑаÑзеÑом. РазÑабоÑÑики Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð¾Ð¿ÑÑÑимÑй Ñип MIME, коÑоÑÑй не ÑвлÑеÑÑÑ Ñипом MIME JavaScript, Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² даннÑÑ
. ÐÑÑибÑÑ
srcбÑÐ´ÐµÑ Ð¿ÑоигноÑиÑован.
- ÐÑÑибÑÑ Ð½Ðµ ÑÑÑановлен (по-ÑмолÑаниÑ), пÑÑÑÐ°Ñ ÑÑÑока или ÑÑÑановлен как MIME-Ñип JavaScript
УÑÑаÑевÑие аÑÑибÑÑÑ
charset-
ÐÑли пÑиÑÑÑÑÑвÑеÑ, его знаÑение должно ÑооÑвеÑÑÑвоваÑÑ "utf-8" без ÑÑеÑа ÑегиÑÑÑа ASCII. Рв Ñом, и в дÑÑгом ÑлÑÑае Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи ÑказÑваÑÑ Ð°ÑÑибÑÑ charset, поÑколÑÐºÑ Ð´Ð¾ÐºÑменÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ UTF-8, а ÑÐ»ÐµÐ¼ÐµÐ½Ñ script наÑледÑÐµÑ ÑÐ²Ð¾Ñ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ñимволов Ð¾Ñ Ð´Ð¾ÐºÑменÑа.
language-
Ðак и аÑÑибÑÑ
type, ÑÑÐ¾Ñ Ð°ÑÑибÑÑ Ð¾Ð¿ÑеделÑÐµÑ Ð¸ÑполÑзÑемÑй ÑзÑк ÑÑенаÑиев. Ðднако, в оÑлиÑие оÑtype, возможнÑе знаÑениÑlanguageникогда не бÑли ÑÑандаÑÑизиÑованÑ. ÐмеÑÑо него ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð°ÑÑибÑÑtype.
ÐÑимеÑаниÑ
ÐÐ»ÐµÐ¼ÐµÐ½Ñ <script> без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð°ÑÑибÑÑов async , defer или type="module", а Ñакже вÑÑÑоеннÑй ÑкÑипÑ, загÑÑжаеÑÑÑ Ð¸ вÑполнÑеÑÑÑ ÑÑазÑ, до Ñого как бÑаÑÐ·ÐµÑ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ ÑÐ°Ð·Ð±Ð¾Ñ Ð´Ð¾ÐºÑменÑа.
ÐÐ»Ñ Ð¾Ð±ÑабоÑки ÑкÑÐ¸Ð¿Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ имеÑÑ Ñип даннÑÑ
text/javascript, но бÑаÑзеÑÑ ÑниÑÑ
одиÑелÑÐ½Ñ Ð¸ блокиÑÑÑÑ Ð¾Ð±ÑабоÑÐºÑ ÑолÑко в Ñом ÑлÑÑае, еÑли ÑкÑÐ¸Ð¿Ñ Ð¿ÑедÑÑавлÑÐµÑ Ð´Ð°Ð½Ð½Ñе одного из Ñипов: изобÑажение (image/*); видео (video/*); аÑдио (audio/*); или text/csv. ÐÑли ÑкÑÐ¸Ð¿Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñован, ÑлеменÑÑ Ð¾ÑпÑавлÑеÑÑÑ ÑобÑÑие error, еÑли не бÑло оÑпÑавлено ÑобÑÑие load.
ÐÑимеÑÑ
>ÐÑновное иÑполÑзование
ÐÑи пÑимеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ ÐºÐ°Ðº импоÑÑиÑоваÑÑ ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ <script> в HTML4 и HTML5.
<!-- HTML4 -->
<script type="text/javascript" src="javascript.js"></script>
<!-- HTML5 -->
<script src="javascript.js"></script>
ФолбÑк-модÑлÑ
ÐÑаÑзеÑÑ, поддеÑживаÑÑие иÑполÑзование знаÑÐµÐ½Ð¸Ñ module Ð´Ð»Ñ Ð°ÑÑибÑÑа type, игноÑиÑÑÑÑ Ð»ÑбÑе ÑкÑипÑÑ Ñ Ð°ÑÑибÑÑом nomodule. ÐÑо ÑазÑеÑÐ°ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¼Ð¾Ð´ÑлÑнÑе ÑкÑипÑÑ, и в ÑÐ¾Ñ Ð¶Ðµ ÑамÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¸ÑполÑзоваÑÑ nomodule-ÑкÑипÑÑ Ð´Ð»Ñ Ð±ÑаÑзеÑов без поддеÑжки модÑлÑнÑÑ
ÑкÑипÑов.
<script type="module" src="main.mjs"></script>
<script nomodule src="fallback.js"></script>
СпеÑиÑикаÑии
| Specification |
|---|
| HTML > # the-script-element > |