Метод MutationObserver: takeRecords()
Базовая Широко поддерживается
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод MutationObserver takeRecords() возвращает список всех сопоставленных изменений DOM, которые были обнаружены, но ещё не обработаны функцией обратного вызова наблюдателя, оставляя очередь мутаций пустой.
Наиболее распространённый случай использования — это немедленное получение всех ожидающих записей мутаций непосредственно перед отключением наблюдателя, чтобы любые ожидающие мутации могли быть обработаны при завершении работы наблюдателя.
Синтаксис
takeRecords()
Параметры
Нет.
Возвращаемое значение
Массив объектов MutationRecord, каждый из которых описывает одно изменение, применённое к наблюдаемой части дерева DOM документа.
Примечание: Очередь мутаций, которые произошли, но не были доставлены в функцию обратного вызова наблюдателя, становится пустой после вызова takeRecords().
Примеры
В этом примере демонстрируется, как обрабатывать любые непереданные MutationRecord, вызывая takeRecords() непосредственно перед отключением наблюдателя.
const targetNode = document.querySelector("#someElement");
const observerOptions = {
childList: true,
attributes: true,
};
const observer = new MutationObserver(callback);
observer.observe(targetNode, observerOptions);
/* later, when it's time to stop observing… */
/* handle any still-pending mutations */
let mutations = observer.takeRecords();
observer.disconnect();
if (mutations.length > 0) {
callback(mutations);
}
Код извлекает любые необработанные записи мутаций, затем вызывает функцию обратного вызова с записями, чтобы они могли быть обработаны. Это делается непосредственно перед вызовом disconnect() для остановки наблюдения за DOM.
Спецификации
| Спецификация |
|---|
| DOM # ref-for-dom-mutationobserver-takerecords① |
Совместимость с браузерами
| Рабочий стол | Мобильное устройство | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
takeRecords |
20 | 12 | 14 | 15 | 6 | 25 | 14 | 14 | 6 | 1.5 | 4.4 |
© 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/MutationObserver/takeRecords