2024年4月4日发(作者:)

mutationobserver用法 dom

MutationObserver用法 DOM

MutationObserver是JavaScript中的一个API,用于

监视DOM树的变化,并在变化发生时执行相应的回调函

数。MutationObserver为开发人员提供了一种更灵活和高

效地检测和响应DOM变化的方式,以替代传统的事件监听

方法。

1. MutationObserver的基本用法 MutationObserver

的基本用法非常简单,首先我们需要创建一个

MutationObsever对象,并传入一个回调函数作为参数。回

调函数会在DOM发生变化时被调用。我们可以在回调函数

中进行相应的处理。

```javascript // 创建一个MutationObserver对象

const observer = new MutationObserver(callback);

// 配置观察选项 const options = { // 观察子节

点的变化 childList: true, // 观察属性的变化

attributes: true, // 观察子节点的属性变化

attributeOldValue: true, // 观察文本节点的变化

characterData: true, // 观察子节点的文本节点变化

characterDataOldValue: true, // 观察断开的节点

subtree: true, };

// 启动观察 e(target, options);

// 回调函数 function callback(mutationsList,

observer) { // 遍历所有变动的mutation for (let

mutation of mutationsList) { // 处理相应的变动

(, ,

ue); } }

// 停止观察 nect(); ```

2. 观察选项配置 MutationObserver的观察选项配置

对象可以设置以下属性:

- childList:是否观察子节点的变化,默认为

false。 - attributes:是否观察属性的变化,默认为

false。 - attributeOldValue:是否在变化发生时记录属

性的上一个值,默认为false。 - characterData:是否观

察文本节点的变化,默认为false。 -

characterDataOldValue:是否在变化发生时记录文本节点

的上一个值,默认为false。 - subtree:是否观察断开的

节点节点变化,默认为false。

3. MutationRecord对象 当DOM发生变化时,

MutationObserver回调函数的参数会接收一个

MutationRecord对象,它包含了DOM变化的详细信息。

MutationRecord对象具有以下属性:

- type:表示变化类型的字符串。 - target:发生变

化的节点。 - addedNodes:新增的节点,是一个节点列

表。 - removedNodes:移除的节点,是一个节点列表。 -

previousSibling:前一个同级节点。 - nextSibling:下

一个同级节点。 - attributeName:发生变化的属性名

称,在attributes变化时使用。 -

attributeNamespace:变化属性的命名空间,在

attributes变化时使用。 - oldValue:在变化发生时的上

一个值,在属性变化时使用。

4. 实际应用示例 下面是一个实际应用示例,我们通

过MutationObserver监听一个元素的子节点变化,实时更

新子节点的数量:

```javascript const targetElement =

mentById('target'); const

countElement = mentById('count');

// 创建一个MutationObserver对象 const observer

= new MutationObserver(callback);

// 观察选项配置对象 const options =

{ childList: true, };

// 启动观察 e(targetElement,

options);

// 回调函数 function callback(mutationsList,

observer) { // 获取当前子节点的数量 const count

= ; // 更新子节点

数量 ntent = `子节点数量:

${count}`; }

// 停止观察 nect(); ```

在上述示例中,我们通过MutationObserver监听了一

个id为"target"的元素的子节点变化,并在回调函数中实

时更新id为"count"的元素的文本内容,显示当前子节点

的数量。

总结 MutationObserver是一个非常强大和灵活的工

具,可以用于监视DOM的变化。它可以监听DOM树中几乎

所有的变动,并在变动发生时执行相应的回调函数。

MutationObserver的用法非常简单,只需要创建一个

MutationObserver对象,并通过观察选项配置对象设置观

察的类型,然后在回调函数中处理相应的变动即可。通过

使用MutationObserver,开发人员可以更高效、优雅地监

听和响应DOM的变化。