From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/htmlscriptelement/index.html | 190 ++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 files/ru/web/api/htmlscriptelement/index.html (limited to 'files/ru/web/api/htmlscriptelement') diff --git a/files/ru/web/api/htmlscriptelement/index.html b/files/ru/web/api/htmlscriptelement/index.html new file mode 100644 index 0000000000..064a078e7f --- /dev/null +++ b/files/ru/web/api/htmlscriptelement/index.html @@ -0,0 +1,190 @@ +--- +title: HTMLScriptElement +slug: Web/API/HTMLScriptElement +translation_of: Web/API/HTMLScriptElement +--- +
{{APIRef("HTML DOM")}}
+ +

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

+ +

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

+ +

{{InheritanceDiagram(600, 120)}}

+ +

Свойства

+ +

Наследует свойства от своего родителя, {{domxref("HTMLElement")}}.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ИмяТипОписание
type{{domxref("DOMString")}}Представляет тип MIME сценария. Он отражает атрибут {{htmlattrxref("type","script")}}.
src{{domxref("DOMString")}}Получает и отдает URL внешнего скрипта. Он отражает атрибут {{htmlattrxref("src","script")}}.
event{{obsolete_inline}}{{domxref("DOMString")}}Старый, способ регистрации обработчиков событий на элементы в HTML-документе.
charset{{domxref("DOMString")}}Представляет кодировку символов внешнего скрипта. Он отражает атрибут {{htmlattrxref("charset","script")}}.
async{{domxref("Boolean")}} +

Атрибуты async и defer булевы атрибуты, которые контролируют как скрипт должен выполняться. Атрибуты defer и async не должны быть указаны, если атрибут src отсутствует.

+ +

Существует три возможных режима выполнения:

+ +
    +
  1. Если атрибут async представлен, то скрипт будет выполняться асинхронно по мере загрузки.
  2. +
  3. Если атрибут async отсутствует, но представлен атрибут defer, то скрипт будет выполняться когда страница полностью загружена.
  4. +
  5. Если ни один атрибут не представлен, то скрипт извлекается и выполняется незамедлительно, блокируя дальнейший парсинг страницы.
  6. +
+ +

Атрибут defer может быть указан с атрибутом async, тогда устаревшие браузеры, которые поддерживают только defer (но не async) откатятся к поведению defer взамен дефолтного поведения блокировки.

+ +
Примечание: Точные детали обработки для этих атрибутов комплексны, включая множество различных аспектов HTML, и разбросаны по всей спецификации. Эти алгоритмы описывают основную идею, но они основаны на правилах синтаксического анализа для {{HTMLElement("script")}} открывающих и закрывающих тэгах в HTML, во внешнем контенте, и в XML; правиле для метода  document.write(); обработке сценариев; и так далее.
+
defer{{domxref("Boolean")}}
crossOrigin {{experimental_inline}}{{domxref("DOMString")}}{{domxref("DOMString")}}, отражающий настройку CORS для элементов скрипта. Для скриптов из других источников, он контролирует, будет ли раскрыта информация об ошибке.
text{{domxref("DOMString")}} +

IDL атрибут text объединяет и возвращает содержимое всех Text нод внутри элемента {{HTMLElement("script")}} (игнорируя другие ноды, такие как комментарии) в древовидном порядке. При установке, он  действует также, как и IDL атрибут textContent.

+ +
Примечание: При вставке с использованием метода document.write(), элементы {{HTMLElement("script")}} выполняются (обычно синхронно), когда при вставке используются innerHTML или outerHTML, они вообще не выполняются.
+
noModule{{domxref("Boolean")}}Это булево свойство выполняет остановку выполнения скрипта в браузере, поддерживающим ES2015 модули — используется для запуска резервных скриптов, которые не поддерживают JavaScript модули.
referrerPolicy{{domxref("DOMString")}}{{domxref("DOMString")}}, который отражает HTML атрибут {{htmlattrxref("referrerPolicy", "script")}} указывающий, какой реферер использовать при извлечении скриптов и выборках, выполненных сценариев.
+ +

Методы

+ +

Нет специальных методов; наследует методы от родителей, {{domxref("HTMLElement")}}.

+ +

Примеры

+ +

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

+ +

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

+ +
function loadError(oError) {
+  throw new URIError("The script " + oError.target.src + " didn't load correctly.");
+}
+
+function prefixScript(url, onloadFunction) {
+  var newScript = document.createElement("script");
+  newScript.onerror = loadError;
+  if (onloadFunction) { newScript.onload = onloadFunction; }
+  document.currentScript.parentNode.insertBefore(newScript, document.currentScript);
+  newScript.src = url;
+}
+ +

Следующая функция, вместо добавления новых скриптов непосредственно перед элементом {{domxref("document.currentScript")}}, добавляет их как потомков тега {{HTMLElement("head")}}.

+ +
function loadError(oError) {
+  throw new URIError("The script " + oError.target.src + " didn't load correctly.");
+}
+
+function affixScriptToHead(url, onloadFunction) {
+  var 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", function () { alert("The script \"myScript2.js\" has been correctly loaded."); });
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('HTML WHATWG', "#htmlscriptelement", "HTMLScriptElement")}}{{Spec2('HTML WHATWG')}}
{{SpecName('HTML5.1', "scripting-1.html#the-script-element", "HTMLScriptElement")}}{{Spec2('HTML5.1')}}
{{SpecName('HTML5 W3C', "scripting-1.html#the-script-element", "HTMLScriptElement")}}{{Spec2('HTML5 W3C')}}Следующие свойства устарели: htmlFor,.
{{SpecName('DOM2 HTML', 'html.html#ID-81598695', 'HTMLScriptElement')}}{{Spec2('DOM2 HTML')}}Нет изменений в сравнении с {{SpecName("DOM1")}}.
{{SpecName('DOM1', 'level-one-html.html#ID-81598695', 'HTMLScriptElement')}}{{Spec2('DOM1')}}Первое определение.
+ +

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

+ + + +

{{Compat("api.HTMLScriptElement")}}

+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf