HTML тег <script>

Значение и применение

Тег <script> используется для определения скрипта на стороне клиента (как правило на языке JavaScript). Элемент содержит внутри себя текст скрипта, либо он указывает на внешний файл скрипта, который задается с использованием атрибута src. Если элемент ссылается на внешний скрипт, то в этом случае элемент должен быть пустым.

Поддержка браузерами

Спецификация: multipage

Поддерживается во всех основных браузерах с 2015 года.

Отдельные значения (21) поддерживаются не везде — смотрите таблицу.

Показать браузеры
Совместимостьhtml.elements.script
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
script✓1✓12✓1✓≤12.1✓3✓18✓4✓≤12.1✓2✓1.0✓4.4✓2
async✓1✓12✓3.6✓15✓≤4✓18✓4✓14✓≤3.2✓1.0✓4.4✓≤3.2
attributionsrc✓125✓125×✓111×✓125×✓83×✓27.0✓125×
blocking✓105✓105×✓91✓18.2✓105×✓72✓18.2✓20.0✓105✓18.2
crossorigin✓19✓14✓14✓12✓6✓25✓14✓12✓6✓1.5✓4.4✓6
defer✓1✓12✓3.5✓15✓3✓18✓4✓14✓2✓1.0✓4.4✓2
fetchpriority✓101✓101✓132✓87✓17.2✓101✓132✓70✓17.2✓19.0✓101✓17.2
integrity✓45✓17✓43✓32✓11.1✓45✓43✓32✓11.3✓5.0✓45✓11.3
Signature-based integrity (Ed25519 public key values)✓141✓141×✓125×✓141×✓93×✓30.0✓141×
nomodule✓61✓16✓60✓48✓11✓61✓60✓45✓11✓8.0✓61✓11
referrerpolicy✓70✓79✓65✓57✓14✓70✓65✓49✓14✓10.0✓70✓14
no-referrer-when-downgrade✓70✓79×✓57×✓70×✓49×✓10.0✓70×
origin-when-cross-origin✓70✓79×✓57×✓70×✓49×✓10.0✓70×
unsafe-url✓70✓79×✓57×✓70×✓49×✓10.0✓70×
src✓1✓12✓1✓15✓≤4✓18✓4✓14✓≤3.2✓1.0✓4.4✓≤3.2
type✓1✓12✓1✓15✓≤4✓18✓4✓14✓≤3.2✓1.0✓4.4✓≤3.2
importmap✓89✓89✓108✓75✓16.4✓89✓108✓63✓16.4✓15.0✓89✓16.4
integrity✓127✓127✓138✓113✓18✓127✓138✓84✓18✓28.0✓127✓18
Multiple import maps✓133✓133◐150✓118✓18.4✓133×✓88✓18.4✓29.0✓133✓18.4
module✓61✓79✓60✓48✓10.1✓61✓60✓45✓10.3✓8.0✓61✓10.3
speculationrules✓109✓109×✓95◐26.2✓109×✓74◐26.2✓21.0✓109×
eagerness✓121✓121×✓107◐26.2✓121×✓81◐26.2✓25.0✓121×
expects_no_vary_search key✓127✓127×✓113×✓127×✓84×✓28.0✓127×
prefetch✓110✓110×✓96◐26.2✓103×✓71◐26.2✓20.0✓103×
prerender✓105✓105×✓91×✓103×✓71×✓20.0◐135×
referrer_policy key✓111✓111×✓97◐26.2✓111×✓75◐26.2✓22.0✓111×
relative_to key✓121✓121×✓107◐26.2✓121×✓81◐26.2✓25.0✓121×
requires✓110✓110×✓96×✓103×✓71×✓20.0✓103×
anonymous-client-ip-when-cross-origin✓110××××✓103×✓71××✓103×
source key is optional✓122✓122×✓108◐26.2✓122×✓81◐26.2✓26.0✓122×
tag✓136✓136×✓121◐26.2✓136×✓90◐26.2✓29.0✓136×
target_hint key◐138◐138×◐122×◐138×◐91×◐30.0◐138×
urls✓109✓109×✓95◐26.2✓103×✓71◐26.2✓20.0✓103×
where✓121✓121×✓107◐26.2✓121×✓81◐26.2✓25.0✓121×

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

Атрибуты

Атрибут Значение Описание
async async Обычный внешний скрипт выполняется по готовности без гарантии порядка. У модулей работает также для встроенного модуля и его зависимостей.
charset Устарело charset Задает кодировку символов, используемых во внешнем файле скрипта.
crossorigin anonymous
use-credentials
Атрибут определяет, используется ли CORS при загрузке скрипта.
defer defer Обычный внешний скрипт выполняется после разбора HTML, до DOMContentLoaded, в порядке подключения; не ждёт все изображения. Модулям defer не нужен.
src URL Указывает URL адрес внешнего файла скрипта (допускается использование как относительных, так и абсолютных адресов).
type Тип скрипта Без атрибута — обычный JavaScript. module — модуль, importmap — карта импортов, speculationrules — правила предварительной загрузки/отрисовки (ограниченная поддержка). Другой MIME-тип может обозначать невыполняемый блок данных.
nomodule Логический атрибут Обычный скрипт выполняется только браузером без поддержки модулей.
integrity Хеши ресурса Проверка целостности внешнего файла (SRI); для другого источника нужен корректный CORS.
referrerpolicy Политика Referer Управляет передаваемым адресом страницы при запросах скрипта.
blocking render В head позволяет запрашивать блокировку рендеринга; отличается от остановки разбора HTML.
fetchpriority auto | high | low Подсказка приоритета загрузки внешнего файла.

Примеры, попробуйте сами

Изменение оформления абзаца

Нажмите ▶. Измените разметку во вкладке HTML и сравните результат.

index.html
HTML
<p id="test">Нажми кнопку, чтобы изменить параграф.</p>

<button>Нажми меня!</button>
main.js
JavaScript
function chg() {
    var x = document.getElementById('test')
    x.style.color = 'white'
    x.style.backgroundColor = 'orange'
}

document.querySelector('button').addEventListener('click', chg)

Отличия HTML 4.01 от HTML 5

В HTML 5 был добавлен атрибут async и удалён атрибут xml:space. В HTML5, атрибут type больше не требуется для JavaScript (значение атрибута по умолчанию - "text/javascript").

Значение CSS по умолчанию

CSS
script {
display: none;
}

Поддержка глобальных атрибутов

Элемент поддерживает "глобальные атрибуты".

Атрибуты событий

Элемент поддерживает "атрибуты событий".