--- title: HTMLScriptElement slug: Web/API/HTMLScriptElement translation_of: Web/API/HTMLScriptElement ---
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")}} |
Атрибуты Существует три возможных режима выполнения:
Атрибут Примечание: Точные детали обработки для этих атрибутов комплексны, включая множество различных аспектов HTML, и разбросаны по всей спецификации. Эти алгоритмы описывают основную идею, но они основаны на правилах синтаксического анализа для {{HTMLElement("script")}} открывающих и закрывающих тэгах в HTML, во внешнем контенте, и в XML; правиле для метода
document.write() ; обработке сценариев; и так далее. |
defer |
{{domxref("Boolean")}} | |
crossOrigin {{experimental_inline}} |
{{domxref("DOMString")}} | {{domxref("DOMString")}}, отражающий настройку CORS для элементов скрипта. Для скриптов из других источников, он контролирует, будет ли раскрыта информация об ошибке. |
text |
{{domxref("DOMString")}} |
IDL атрибут Примечание: При вставке с использованием метода
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")}}