html5 observer api,极其有用的DOM API——MutationObserver监听节点变化详解

今天来介绍一个很有用的DOM API——MutationObserver

使用背景

页面或者某个父类DOM需要监听子节点的变化,来进行统一回调,这个变化包括了:特定属性名称的变化,例如class等

属性的变化

整个DOM树中子节点的变化

MutationObserver介绍这里采用了MDN的官方介绍,MutationObserver接口提供了监视对DOM树所做更改的能力。它被设计为旧的Mutation Events功能的替代品,该功能是DOM3 Events规范的一部分。

MutationObserver主要包括了三个方法,具体可结合下面示例:disconnect()——阻止 MutationObserver 实例继续接收的通知

observe()——配置MutationObserver在DOM更改匹配给定选项

takeRecords()——从MutationObserver的通知队列中删除所有待处理的通知

实例&示例

通过MutationObserver()即可构造一个实例,下面为使用示例// 选择需要观察变动的节点

const targetNode = document.getElementById('some-id');

// 观察器的配置(需要观察什么变动)

const config = {

attributes: true, // 开启监听属性

childList: true, // 开启监听子节点

subtree: true // 开启监听子节点下面的所有节点

};

// 当观察到变动时执行的回调函数

const callback = function(mutationsList, observer) {

// Use traditional 'for loops' for IE 11

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(targetNode, config);

// 之后,可停止观察

observer.disconnect();

config的值介绍

上文的config为一个MutationObserverInit字典,描述了MutationObserver的配置,我们有以下可选属性进行配置(没有必选属性)属性介绍attributeFilter要监视的特定属性名称的数组。如果未包含此属性,则对所有属性的更改都会触发变动通知。无默认值。

attributeOldValue当监视节点的属性改动时,将此属性设为 true 将记录任何有改动的属性的上一个值。无默认值。

attributes设为 true 以观察受监视元素的属性值变更。默认值为 false。

characterData设为 true 以监视指定目标节点或子节点树中节点所包含的字符数据的变化。无默认值。

characterDataOldValue设为 true 以在文本在受监视节点上发生更改时记录节点文本的先前值。无默认值。

childList设为 true 以监视目标节点(如果 subtree 为 true,则包含子孙节点)添加或删除新的子节点。默认值为 false。

subtree设为 true 以将监视范围扩展至目标节点整个节点树中的所有节点。MutationObserverInit 的其他值也会作用于此子树下的所有节点,而不仅仅只作用于目标节点。默认值为 false。

callback介绍

callback

一个回调函数,每当被指定的节点或子树以及配置项有Dom变动时会被调用。回调函数拥有两个参数:一个是描述所有被触发改动的 MutationRecord 对象数组,另一个是调用该函数的MutationObserver 对象。

参考文章:

https://developer.mozilla.org...

附API的适配性:

2563f83214c1cbfe891db428ffbc8eba.png

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[极其有用的DOM API——MutationObserver监听节点变化详解]http://www.zyiz.net/tech/detail-149114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Intersection Observer API 是一种基于观察者模式的浏览器 API,用于异步观察元素与浏览器视口的交集变化。当我们使用 IntersectionObserver 实例观测目标元素时,它会在元素进入或离开视口时向我们提供交叉信息的通知。这个 API 的主要用途是检测元素的可见性或两个元素的相对可见性变化,而不会影响网站的性能和用户体验。它可以帮助开发者实现一些业务需求和性能优化,同时简化处理交叉信息的代码细节,使开发者能够更专注于实现业务功能。如果您对 Intersection Observer API 还不熟悉,建议您学习一下,相信它会对您的前端开发工作带来很大的帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Intersection Observer API 详解](https://blog.csdn.net/qq_37788174/article/details/130599097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [JS小知识,Intersection Observer API 使用指南](https://blog.csdn.net/Ed7zgeE9X/article/details/129075720)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值