Что такое Mutation Observer

Ответ

Mutation Observer — это API, позволяющий отслеживать изменения в DOM. Он заменяет устаревшие MutationEvents, работая асинхронно и более эффективно.

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

const observer = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    console.log('DOM изменился:', mutation);
  });
});

observer.observe(document.body, {
  childList: true,
  subtree: true,
  attributes: true,
  characterData: true
});

Ключевые особенности:

  • Работает асинхронно (изменения собираются в батч)
  • Можно наблюдать за узлами, атрибутами, текстом
  • Оптимизирован для производительности
  • Поддерживается всеми современными браузерами

Используется для:

  • Отслеживания динамического контента
  • Интеграции с сторонними библиотеками
  • Реализации кастомного поведения при изменениях DOM

Ответ 18+ 🔞

А, слушай, вот эта штука — Mutation Observer, ну просто пиздец как удобная! Это типа такой сторож, который сидит и смотрит, как твой DOM меняется, и не орёт по поводу каждой хуйни, как это делали старые MutationEvents, которые всех уже заебали своей тормознутостью.

Вот смотри, как это выглядит, блядь:

const observer = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    console.log('DOM изменился:', mutation);
  });
});

observer.observe(document.body, {
  childList: true,
  subtree: true,
  attributes: true,
  characterData: true
});

Суть в чём, ёпта? Он не дергается на каждое чихание. Сидит себе тихо, копит все изменения, как хитрая жопа, а потом — раз! — и вываливает тебе пачку сразу. Асинхронно, блядь! Не то что эти старые ивенты, которые орали на каждый чих и всю твою страницу в говно превращали.

Чё он умеет, этот сторож-мутант?

  • Сидит и ждёт, пока все изменения накопятся, а потом одним махом отчитывается — красота!
  • Может следить за узлами, атрибутами и даже текстом внутри, если попросить.
  • Сделан так, чтобы не ебать твою производительность в сраку.
  • И, охуенно, работает везде, где есть более-менее живой браузер.

Где это, блядь, пригождается? Да везде!

  • Когда у тебя контент лезет как сумасшедший, динамический, и надо знать, когда он приполз.
  • Когда интегрируешь какую-нибудь левую библиотеку, которая сама по себе DOM ковыряет, и тебе надо под это дело подстроиться.
  • Ну и вообще, когда хочешь сделать какую-то свою, ебучую, магию, которая срабатывает только когда в дереве что-то поменялось.

В общем, вещь, блядь, овердохуище полезная. Запоминай!