MutationObserver:takeRecords() 方法

The MutationObserver method takeRecords() 返回一个列表,其中包含所有已检测到但尚未由观察者的回调函数处理的匹配 DOM 更改,并将突变队列清空。

此方法最常见的用例是在断开观察者连接之前立即获取所有挂起的突变记录,以便在关闭观察者时处理任何挂起的突变。

语法

js
takeRecords()

参数

无。

返回值

一个包含 MutationRecord 对象的数组,每个对象描述一个应用于文档 DOM 树中观察部分的更改。

注意:在调用 takeRecords() 后,已发生但尚未传递给观察者回调的突变队列将被清空。

示例

在本例中,我们将演示如何通过在断开观察者连接之前调用 takeRecords() 来处理任何未传递的 MutationRecord

js
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①

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。