Spec-Zone.ru › Web APIs

HTMLScriptElement

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Узнать больше
  • Показать полную совместимость
  • Отправить отзыв

Элементы HTML <script> экспонируют интерфейс HTMLScriptElement, который предоставляет специальные свойства и методы для управления поведением и выполнением элементов <script> (помимо унаследованного интерфейса HTMLElement).

Файлы JavaScript должны быть предоставлены с типом MIME text/javascript, но браузеры проявляют снисходительность и блокируют их только в том случае, если скрипт предоставлен с типом изображения (image/*), видео (video/*), аудио (audio/*) или text/csv. Если скрипт заблокирован, его элемент получает событие error; в противном случае — событие load.

EventTarget Узел Элемент HTMLElement HTMLScriptElement

Свойства экземпляра

Наследует свойства от родительского класса HTMLElement.

HTMLScriptElement.attributionSrc Безопасный контекст Экспериментальная

Получает и устанавливает атрибут attributionsrc для элемента <script> программно, отражая значение этого атрибута. attributionsrc указывает, что браузеру нужно отправлять заголовок Attribution-Reporting-Eligible вместе с запросом на ресурс скрипта. На стороне сервера это используется для отправки заголовка Attribution-Reporting-Register-Source или Attribution-Reporting-Register-Trigger в ответе для регистрации источника атрибуции на базе JavaScript или триггера атрибуции соответственно.

HTMLScriptElement.async

Булево значение, контролирующее, как должен выполняться скрипт. Для классических скриптов, если свойство async установлено в true, внешний скрипт будет загружен параллельно с парсингом и оценён, как только он станет доступен. Для модульных скриптов, если свойство async установлено в true, скрипт и все его зависимости будут загружены параллельно с парсингом и оценены, как только они станут доступными.

HTMLScriptElement.blocking

Строка, указывающая, что некоторые операции должны быть заблокированы при загрузке скрипта. Она отражает атрибут blocking элемента <script>.

HTMLScriptElement.charset Устаревший

Строка, представляющая кодировку символов внешнего скрипта. Она отражает атрибут charset.

HTMLScriptElement.crossOrigin

Строка, отражающая настройку CORS для элемента скрипта. Для классических скриптов из других источников это управляет отображением информации об ошибках.

HTMLScriptElement.defer

Булево значение, контролирующее выполнение скрипта. Для классических скриптов, если свойство defer установлено в true, внешний скрипт будет выполнен после разбора документа, но перед срабатыванием события DOMContentLoaded. Для модульных скриптов, свойство defer не оказывает влияния.

HTMLScriptElement.event Устаревший

Строка; устаревший способ регистрации обработчиков событий для элементов в HTML-документе.

HTMLScriptElement.fetchPriority

Необязательная строка, представляющая подсказку для браузера о том, как следует приоритизировать загрузку внешнего скрипта относительно других внешних скриптов. Если это значение предоставлено, оно должно быть одним из допустимых значений: high для загрузки с высоким приоритетом, low для загрузки с низким приоритетом или auto для обозначения отсутствия предпочтения (что является значением по умолчанию). Она отражает атрибут fetchpriority элемента <script>.

HTMLScriptElement.integrity

Строка, содержащая встроенные метаданные, которые браузер может использовать для проверки того, что полученный ресурс был доставлен без непредвиденных изменений. Она отражает атрибут integrity элемента <script>.

HTMLScriptElement.noModule

Булево значение, которое, если истинно, останавливает выполнение скрипта в браузерах, поддерживающих модули ES — используется для запуска резервных скриптов в старых браузерах, которые НЕ поддерживают модули JavaScript.

HTMLScriptElement.referrerPolicy

Строка, которая отражает атрибут referrerPolicy HTML, указывающий, какой реферер использовать при загрузке скрипта и загрузках, выполненных этим скриптом.

HTMLScriptElement.src

Строка, представляющая URL внешнего скрипта; это может быть использовано как альтернатива встраиванию скрипта непосредственно в документ. Она отражает атрибут src элемента <script>.

HTMLScriptElement.text

Строка, которая объединяет и возвращает содержимое всех узлов Text внутри элемента <script> (игнорируя другие узлы, такие как комментарии) в порядке обхода дерева. При установке она действует так же, как свойство Node.textContent.

Примечание: При вставке с помощью метода Document.write(), элементы <script> выполняются (обычно синхронно), но при вставке с помощью Element.innerHTML или Element.outerHTML они вообще не выполняются.

HTMLScriptElement.type

Строка, представляющая тип скрипта. Она отражает атрибут type элемента <script>.

Статические методы

HTMLScriptElement.supports()

Возвращает true, если браузер поддерживает скрипты указанного типа, и false, в противном случае. Этот метод предоставляет простой и унифицированный метод для обнаружения функциональности, связанной со скриптами.

Методы экземпляра

Нет конкретных методов; наследует методы от родительского класса HTMLElement.

События

Нет специфических событий; наследует события от своего родителя, HTMLElement.

Примеры

Динамическая импортация скриптов

Давайте создадим функцию, которая импортирует новые скрипты в документ, создавая узел <script> непосредственно перед <script>, который содержит следующий код (через document.currentScript). Эти скрипты будут выполняться асинхронно. Для получения более подробной информации см. свойства defer и async.

function loadError(oError) {
  throw new URIError(`The script ${oError.target.src} didn't load correctly.`);
}

function prefixScript(url, onloadFunction) {
  const newScript = document.createElement("script");
  newScript.onerror = loadError;
  if (onloadFunction) {
    newScript.onload = onloadFunction;
  }
  document.currentScript.parentNode.insertBefore(
    newScript,
    document.currentScript,
  );
  newScript.src = url;
}

В следующей функции, вместо добавления новых скриптов непосредственно перед элементом document.currentScript, они добавляются как дочерние элементы тега <head>.

function loadError(oError) {
  throw new URIError(`The script ${oError.target.src} didn't load correctly.`);
}

function affixScriptToHead(url, onloadFunction) {
  const newScript = document.createElement("script");
  newScript.onerror = loadError;
  if (onloadFunction) {
    newScript.onload = onloadFunction;
  }
  document.head.appendChild(newScript);
  newScript.src = url;
}

Пример использования:

affixScriptToHead("myScript1.js");
affixScriptToHead("myScript2.js", () => {
  alert('The script "myScript2.js" has been correctly loaded.');
});

Проверка поддержки типа скрипта

HTMLScriptElement.supports() предоставляет унифицированный механизм для проверки того, поддерживает ли браузер определенные типы скриптов.

В приведенном ниже примере показано, как проверить поддержку модулей, используя наличие атрибута noModule в качестве резервного варианта.

function checkModuleSupport() {
  if ("supports" in HTMLScriptElement) {
    return HTMLScriptElement.supports("module");
  }
  return "noModule" in document.createElement("script");
}

Предполагается, что классические скрипты поддерживаются во всех браузерах.

Спецификации

Спецификация
HTML
# htmlscriptelement

Совместимость браузеров

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
HTMLScriptElement 1 12 1 ≤12.1 3 18 4 ≤12.1 1 1.0 ≤37
async 6 12 3.6 15 5.1 18 4 14 5 1.0 3
attributionSrc 125 125 No 111 No 125 No 83 No 27.0 125
blocking 105 105 No 91 18.2 105 No 72 18.2 20.0 105
charset 1 12 1 ≤12.1 3 18 4 ≤12.1 1 1.0 4.4
crossOrigin 19 14 14 15 6 25 14 14 6 1.5 4.4
defer 1 12 3.5 ≤12.1 3 18 4 ≤12.1 1 1.0 4.4
event 1 12 1 15 3 18 4 14 1 1.0 4.4
fetchPriority 102101–102 102101–102 132 8887–88 17.2 102101–102 132 70 17.2 19.0 102101–102
htmlFor 1 12 1 15 3 18 4 14 1 1.0 4.4
integrity 45 17 43 32 11.1 45 43 32 11.3 5.0 43
noModule 61 16 60 48 11 61 60 45 11 8.0 61
referrerPolicy 70 79 65 57 14 70 65 49 14 10.0 70
src 1 12 1 ≤12.1 3 18 4 ≤12.1 1 1.0 4.4
supports_static 96 96 94 82 16 96 94 67 16 17.0 96
text 1 12 1 ≤12.1 3 18 4 ≤12.1 1 1.0 4.4
type 1 12 1 ≤12.1 3 18 4 ≤12.1 1 1.0 4.4

См. также

  • HTML <script> элемент
  • HTML <noscript> элемент
  • document.currentScript
  • Web Workers (фрагменты кода, похожие на скрипты, но выполняемые в другом глобальном контексте)

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API