--- title: MutationObserver slug: Web/API/MutationObserver tags: - API - Advanced - DOM - DOM Reference - NeedsContent - NeedsUpdate - Reference translation_of: Web/API/MutationObserver ---
{{APIRef("DOM")}}
MutationObserver
предоставляет возможность получать уведомления об изменении определённых DOM-элементов. MutationObserver
является заменой Mutation Events, определённой в спецификации DOM3 Events.
MutationObserver
, который вызовет определенную колбэк-функцию при изменении в DOM.callback
MutationObserver.
MutationObserver
, до того момента пока не будет вызван метод observe().MutationObserver
на получение уведомлений о манипуляциях с DOM-элементом.MutationObserver
, затем очищает её.MutationObserverInit
MutationObserverInit
— объект, который может содержать следующие свойства:
true
для одного из следующих свойств: childList
, attributes
, characterData
. В противном случае будет вызвана ошибка "An invalid or illegal string was specified"Property | Description |
childList |
true, если необходимо наблюдать за добавлением или удалением дочерних элементов (Включая текстовые узлы (text nodes)) |
attributes |
true, если необходимо наблюдать за изменениями атрибутов целевого элемента. |
characterData |
true, если необходимо наблюдать за изменениями значения текстового содержимого целевого узла (текстовых узлов дочернего элемента). |
subtree |
true, если необходимо наблюдать за потомками целевого элемента. |
attributeOldValue |
true, если необходимо возвращать предыдущее значение атрибута. |
characterDataOldValue |
true, если необходимо возвращать предыдущее значение Data атрибута. |
attributeFilter |
Устанавливает массив названий атрибутов (без указания пространства имен), если требуется наблюдать за изменениями конкретных атрибутов. |
https://codepen.io/webgeeker/full/YjrZgg/
Приведённый ниже пример взят из этого блога.
// Выбираем целевой элемент var target = document.getElementById('some-id'); // Конфигурация observer (за какими изменениями наблюдать) const config = { attributes: true, childList: true, subtree: true }; // Колбэк-функция при срабатывании мутации const callback = function(mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'childList') { console.log('A child node has been added or removed.'); } else if (mutation.type === 'attributes') { console.log('The ' + mutation.attributeName + ' attribute was modified.'); } } }; // Создаемэкземпляр наблюдателя с указанной функцией колбэка const observer = new MutationObserver(callback); // Начинаем наблюдение за настроенными изменениями целевого элемента
observer.observe(target, config);
// Позже можно остановить наблюдениеobserver.disconnect();
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('DOM WHATWG', '#mutationobserver', 'MutationObserver')}} | {{ Spec2('DOM WHATWG') }} | |
{{SpecName('DOM4', '#mutationobserver', 'MutationObserver')}} | {{ Spec2('DOM4') }} |
{{Compat("api.MutationObserver")}}