Элемент: метод insertAdjacentHTML()
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод insertAdjacentHTML() интерфейса Element анализирует указанный текст как HTML или XML и вставляет полученные узлы в дерево DOM в указанной позиции.
Синтаксис
insertAdjacentHTML(position, text)
Параметры
position-
Строка, представляющая позицию относительно элемента. Должна быть одной из следующих строк:
"beforebegin"-
Перед элементом. Действительно только если элемент находится в дереве DOM и имеет родительский элемент.
"afterbegin"-
Внутри элемента, перед его первым дочерним элементом.
"beforeend"-
Внутри элемента, после его последнего дочернего элемента.
"afterend"-
После элемента. Действительно только если элемент находится в дереве DOM и имеет родительский элемент.
text-
Строка, которая должна быть обработана как HTML или XML и вставлена в дерево.
Возвращаемое значение
None (undefined).
Исключения
Этот метод может вызвать DOMException одного из следующих типов:
-
NoModificationAllowedErrorDOMException -
Выбрасывается, если
positionявляется"beforebegin"или"afterend"и элемент либо не имеет родителя, либо его родитель — объектDocument. -
SyntaxErrorDOMException -
Выбрасывается, если
positionне является одним из четырёх перечисленных значений.
Описание
Метод insertAdjacentHTML() не повторно анализирует элемент, на котором он используется, и, следовательно, не повреждает существующие элементы внутри этого элемента. Это избегает дополнительной стадии сериализации, что делает его значительно быстрее, чем непосредственное манипулирование innerHTML.
Мы можем визуализировать возможные позиции вставляемого содержимого следующим образом:
<!-- beforebegin --> <p> <!-- afterbegin --> foo <!-- beforeend --> </p> <!-- afterend -->
Рекомендации по безопасности
При вставке HTML на страницу с помощью insertAdjacentHTML(), будьте осторожны, не используйте пользовательский ввод, который не был обработан.
Не следует использовать insertAdjacentHTML() при вставке простого текста. Вместо этого используйте свойство Node.textContent или метод Element.insertAdjacentText(). Это не интерпретирует переданное содержимое как HTML, а вставляет его как обычный текст.
Примеры
Вставка HTML
HTML
<select id="position"> <option>beforebegin</option> <option>afterbegin</option> <option>beforeend</option> <option>afterend</option> </select> <button id="insert">Insert HTML</button> <button id="reset">Reset</button> <p> Some text, with a <code id="subject">code-formatted element</code> inside it. </p>
CSS
code {
color: red;
}
JavaScript
const insert = document.querySelector("#insert");
insert.addEventListener("click", () => {
const subject = document.querySelector("#subject");
const positionSelect = document.querySelector("#position");
subject.insertAdjacentHTML(
positionSelect.value,
"<strong>inserted text</strong>",
);
});
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => {
document.location.reload();
});
Результат
Спецификации
| Спецификация |
|---|
| HTML # the-insertadjacenthtml()-method |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
insertAdjacentHTML |
1 | 17 | 8 | 8 | 4 | 18 | 8 | 10.1 | 4 | 1.0 | ≤37 |
См. также
Element.insertAdjacentElement()Element.insertAdjacentText()-
XMLSerializer: Сериализация дерева DOM в строку XML - пост гостя на hacks.mozilla.org от Henri Sivonen, включающий бенчмарк, демонстрирующий, что insertAdjacentHTML может быть значительно быстрее в некоторых случаях.
© 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/Element/insertAdjacentHTML