MutationObserver的示例代码的使用(附示例代码)

news2024/9/28 15:29:22

MutationObserver的使用

首先先介绍一下MutationObserver的特点
1.MutationObserver的回调属于微队列
2.它会在触发指定 DOM 事件时,调用指定的回调函数,说白了就是用来检测DOM节点的

MutationObserver回调函数

参数

  • callback

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

返回值

  • 一个新的、包含监听 DOM 变化回调函数的 MutationObserver 对象。

实例方法

observe()

参数:

  • target:需要观测的目标节点
  • options: 观测节点的配置项(点击这里查看完整的配置信息)

返回值:

  • undefined

说明:开始观测DOM节点,当DOM节点发生改变时可以调用回调函数(callback)

disconnect()

参数:

返回值:

  • undefined

说明:告诉观测者停止观测DOM节点

takeRecords()

参数:

返回值:

  • 返回一个MutationRecord 对象列表,每个对象都描述了应用于 DOM 树某部分的一次改动

说明:此方法最常见的使用场景是在断开观察者之前立即获取所有未处理的更改记录,以便在停止观察者时可以处理任何未处理的更改。

示例代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MutationObserver的示例</title>
</head>

<body>
    <!-- 被检测的DOM节点 -->
    <div id="container">
        <div class="child"></div>
    </div>
    <!-- 点击改变DOM节点 -->
    <button id="update">改变DOM节点</button><br><br>
    <!-- 停止观测 -->
    <button id="stop"> 停止观测</button>

    <script>
        //获取DOM节点
        const container = document.getElementById('container')
        const button = document.getElementById('update')
        const stopbutton = document.querySelector('#stop')

        //配置检测哪些变化可以被observe检测到
        const options = {
            attributes: true,//检测相关节点的属性的变化
            childList: true,//检测目标节点的删除与新增
        }

        // 创建MutationObserver实例,返回一个观察者对象
        const mutation = new MutationObserver(function (mutationRecoards, observer) {
            //打印描述所有被触发改动的 MutationRecord 对象数组
            console.log(mutationRecoards)
            //打印该函数的 MutationObserver 对象
            console.log(observer)
        })

        // 对观察者添加需要观察的元素,并设置需要观察元素的哪些方面
        mutation.observe(container, options);

        // 对container进行操作
        button.addEventListener('click', function () {
            container.innerText = '这是文本';  // 内容改变
            container.style.background = 'green'; // 属性改变
            for (let i = 0; i < 3; i++) {  // 子节点
                container.appendChild(document.createElement('div'))
            }
        })

        //停止观测
        stopbutton.onclick = function () {
            mutation.disconnect()
        }
    </script>
</body>

</html>

效果图
在这里插入图片描述
列表信息

更加详细信息点击查看这里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文投稿指南——中文核心期刊推荐(环境科学 2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

在甲骨文云容器实例(Container Instances)上部署Oracle Linux 7 Desktop

甲骨文云推出了容器实例&#xff0c;这是一项无服务器计算服务&#xff0c;可以即时运行容器&#xff0c;而无需管理任何服务器。 今天我们尝试一下通过容器实例部署Oracle Linux 7 Desktop。 创建容器实例 在甲骨文容器实例页面&#xff0c;单击"创建容器实例"&am…

分享150个PHP源码,总有一款适合您

PHP源码 分享150个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 150个PHP源码下载链接&#xff1a;https://pan.baidu.com/s/1PWajFunhPFyoNFGc6F4qSQ?pwd0sq5 提取码&#…

Linux rm命令详解,Linux删除文件目录

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 rm 命令一、常用操作1. 删除文件2. 删除目录二、其他操作作用&#xff1a;删除文件或目录 参数&#xff1a; -f 直接删除&#xff0c…

steam/csgo搬砖项目真的假的?

本文全文干货分享&#xff0c;如果你想通过steam搬砖做副业赚钱&#xff0c;看这一篇就够了&#xff01; 这个项目是什么意思&#xff1f; 是不是你也很好奇这个玩法&#xff1f;我们先看下我们自己的数据&#xff0c;再来解释一下我们怎么赚的钱 一、项目原理 利用steam平台…

【Spring5源码学习】Spring基础介绍及调试环境搭建

Spring 是一款用于简化企业级 Java 应用开发的分层开源框架&#xff0c;有着强大的扩展和融合能力&#xff0c;它善于整合各种单层框架并建立起完整的体系&#xff0c;能高效统一的构造可提供企业级服务的应用系统。 1、Spring 概述 Spring Framework 是一个分层非常清晰并且依…

[C++]深复制与浅复制

深复制与浅复制 C中&#xff0c;默认的复制构造函数只能实现浅复制。 浅复制指的是在对象复制前&#xff0c;只对对象中的数据成员进行简单的复制 大多数情况下"浅复制"已经能很好的工作了&#xff0c;但是当类的数据成员中有指针类型时&#xff0c;浅复制只会复制指…

Gulp.Task 正解

gulp task 实现过程 今天从源码的角度分析下 gulp 中 task 的实现过程。多个 task 是如何执行&#xff1f;&#xff1f;&#xff1f; 等等 gulp 插件分布图 其实通过上述截图可以看到&#xff0c;其实整个 gulp 内部什么逻辑都没有&#xff0c;都是由一个一个插件组成的。上述的…

Java多线程案例之单例模式(饿汉,懒汉)

目录 一、饿汉模式 二、懒汉模式 前言&#xff1a;单例模式是校招中最常见的设计模式之一。下面我们来谈谈其中的两个模式&#xff1a;懒汉&#xff0c;饿汉。 何为设计模式&#xff1f; 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多…

《Linux性能优化实战》学习笔记 Day04

06 | 锁&#xff1a;如何根据业务场景选择合适的锁&#xff1f; 原文摘抄 当你无法判断锁住的代码会执行多久时&#xff0c;应该首选互斥锁&#xff0c;互斥锁是一种独占锁。 如果你能确定被锁住的代码执行时间很短&#xff0c;就应该用自旋锁取代互斥锁。 对于 99% 的线程…

工信部电子标准院:龙蜥操作系统获评“优秀”

近日&#xff0c;工信部中国电子技术标准化研究院公布第二批通过开源项目成熟度评估的开源项目名单&#xff0c;龙蜥操作系统&#xff08;Anolis OS&#xff09;凭借在生态构建、技术创新、应用落地等方面的成熟能力与卓越表现&#xff0c;顺利通过评估并获得优秀贰级&#xff…

简单说说什么是真的懂一道题了

昨天写了Richard的2022年一年级入学小结后&#xff0c;后台有读者问我怎么算真的懂一个知识点了&#xff0c;今天来简单说两句&#xff0c;大家都知道&#xff0c;求123…n的和&#xff0c;高斯的幼年成名作。Richard同学在上中班的时候&#xff0c;我就给他科普过高大神的事迹…

2023牛客寒假算法基础集训营3 -- E-公平守望的灯塔(向量 简单几何)

题目如下&#xff1a; 示例1 输入 1 0 0 1输出 0 0说明 输出1 1也是可以的。 思路 or 题解&#xff1a; 我们可以迅速找到 CCC 有两个位置满足题意&#xff0c;但 CCC 的坐标不一定是整数&#xff0c;我们需要 checkcheckcheck MMM 是 ABABAB 的中点 我们可以求出来 AM→…

「栈和队列」简析

前言 前言&#xff1a;研究一个数据结构的时候&#xff0c;首先讲的是增删改查。 文章目录前言一、简介1. 结构2. 特点3. 存储二、栈1. 类比举例2. 操作3. 实现1&#xff09;顺序栈&#xff08;常用&#xff09;a. 核心b. 要素c. 入栈d. 出栈2&#xff09;链式栈三、队列1. 类比…

Spring的Aware接口讲解,内含几篇参考文章

Aware接口文章一、使用Aware与不使用Aware的效果二、ApplicationContext实例介绍Aware三、从Aware顶级接口实现自己的XXXAware一、使用Aware与不使用Aware的效果 参考文章&#xff1a;Spring中的aware接口 定义BeanNameAware接口 public interface BeanNameAware extends Aw…

树的应用举例——并查集和树状数组

并查集 并查集是利用森林来描述一些不相交的集合&#xff0c;并支持集合的合并操作和查询操作。 假设有n个元素&#xff0c;分为m个不相交集合&#xff0c;一个集合构成一棵树&#xff0c;同一棵树&#xff08;集合&#xff09;中的元素地位相等。例如下图的森林表示一个包含…

【Python】Numpy多项式详解

文章目录多项式简介构造函数与图像运算符重载常用方法多项式简介 Numpy.polynomial中封装了六种多项式类&#xff0c;除了常规的多项式a0a1x⋯anxna_0a_1x\cdotsa_nx^na0​a1​x⋯an​xn之外&#xff0c;还有五种在数学、物理中常用的正交多项式&#xff0c;例如Hermite多项式…

祝贺!2022 Rust中文社区线上Hackathon评审结果出炉!

完全超出预期&#xff08;的优秀&#xff01;&#xff09;&#xff01;这次黑客松共有9支队伍闯入最后的评审会。他们是&#xff1a;233bithttps://github.com/rustcc/hackathon2022/tree/master/233bitRust 实现的 合成材料计算器EvolutionLabhttps://github.com/rustcc/hacka…

来自AI浩的新年祝福

大家好&#xff0c;感谢大家这一年来的关注和支持&#xff0c;在新春即将到来之际&#xff0c;AI浩祝大家&#xff1a; 祝大家新的一年里生活能够像下面的兔子那样&#xff0c;多彩多姿&#xff01; 祝愿大家&#xff0c;快乐常伴&#xff0c;笑口常开&#xff01; 在新的…

chfs安装使用注意事项及如何实现http外网访问

对于分享电脑上的文件&#xff0c;或与手机互传文件&#xff0c;除了 QQ、微信还有很多专业的工具&#xff0c;Cute Http File Server (缩写为 chfs)&#xff0c;就是一个免费小巧的 HTTP 文件共享服务器工具&#xff0c;它可以跨平台支持 Windows、Mac 和 Linux&#xff0c;只…