This page was translated from English by the community.Learn more and join the MDN Web Docs community.
<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 |
In this article
Атрибуты
Этот элемент включаетглобальные атрибуты.
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> |