首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用MutationObserver检查body中添加了类的元素?

MutationObserver是一个用于监测DOM树变化的API,可以用于检查body中添加了类的元素。下面是使用MutationObserver检查body中添加了类的元素的步骤:

  1. 创建一个MutationObserver对象,传入一个回调函数作为参数。回调函数将在DOM树发生变化时被调用。
  2. 使用MutationObserver对象的observe方法来指定要观察的目标节点和观察的配置选项。在这种情况下,我们将目标节点设置为document.body,配置选项设置为{ attributes: true, attributeFilter: ['class'] },以便只观察class属性的变化。
  3. 在回调函数中,使用MutationRecord对象的target属性来获取发生变化的元素节点。可以通过target.classList.contains('your-class')来检查元素是否添加了特定的类。
  4. 根据需要执行相应的操作,比如触发其他函数或更新页面内容。

以下是一个示例代码:

代码语言:txt
复制
// 创建MutationObserver对象
const observer = new MutationObserver((mutationsList, observer) => {
  // 遍历每个发生变化的MutationRecord对象
  for (let mutation of mutationsList) {
    // 检查是否是class属性的变化
    if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
      // 获取发生变化的元素节点
      const targetElement = mutation.target;
      
      // 检查元素是否添加了特定的类
      if (targetElement.classList.contains('your-class')) {
        // 执行相应的操作
        // ...
      }
    }
  }
});

// 开始观察body元素的变化
observer.observe(document.body, { attributes: true, attributeFilter: ['class'] });

这样,当body中的元素添加了类时,MutationObserver会触发回调函数,并执行相应的操作。请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为腾讯云的一些相关产品,具体选择和推荐应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用WWWGrep检查网站元素安全

关于WWWGrep WWWGrep是一款针对HTML安全工具,该工具基于快速搜索“grepping”机制实现其功能,并且可以按照类型检查HTML元素,并允许执行单个、多个或递归搜索。...功能介绍 使用递归选项在目标站点上搜索名为“username”或“password”输入字段,快速定位登录页面。 快速检查Header以了解特定技术使用情况。...快速查找网页存在易受攻击JavaScript代码。 识别页面代码存在API令牌和访问密钥。 快速测试管理下多个站点是否使用了易受攻击代码。...中使用承载令牌或其他身份验证字符串 Search Parameters -s --all 在所有页面HTML和脚本搜索匹配术语 -sr --relative 搜索匹配相对...do” -rr 查找特定网页上所有注释: wwwgrep.py -t https://www.target.com/some_page -i -sc “” 使用站点递归方式查找input.txt文件包含

3.7K10

使用Java8Optional来消除代码null检查

本篇文章将详细介绍Optional,以及如何用它消除代码null检查。...基于上面的原因,Java 8引入了一个新Optional,用以避免使用null值引发种种问题。扩展:如何更优雅处理空值?...如何正确使用Optional 通过上面的例子可以看出,Optional可以优雅避免NullPointerException带来各种问题,不过,你是否真正掌握了Optional用法?...()方法是很危险做法,如果Optional值为空,那么毫无疑问会抛出NullPointerException异常,而为了调用get()方法而使用isPresent()方法作为空值检查,这种做法与传统用...(比如你项目中使用了某些序列化框架),使用了Optional作为实体属性,意味着他们不能被序列化。

1.6K40
  • 使用 Java8 Optional 来消除代码 null 检查

    —— 每个 Java 程序员都非常了解异常。 本篇文章将详细介绍 Optional ,以及如何用它消除代码 null 检查。...基于上面的原因,Java8 引入了一个新 Optional,用以避免使用 null 值引发种种问题。...03 如何正确使用 Optional 通过上面的例子可以看出,Optional 可以优雅地避免 NullPointerException 带来各种问题。...而为了调用 get() 方法而使用 isPresent() 方法作为空值检查,这种做法与传统用 if 语句块做空值检查没有任何区别。...,这在某些情况下是很重要(比如你项目中使用了某些序列化框架),使用了 Optional 作为实体属性,意味着他们不能被序列化。

    39330

    你不知道 MutationObserver

    API 常见使用场景; 什么是观察者设计模式及如何使用 TS 实现观察者设计模式。...在以上示例,当点击 跟踪元素生命周期 按钮时,一个新 DIV 元素会被插入到 body ,成功插入后,会在消息框显示相关信息。...在 3S 之后,新增 DIV 元素会从 DOM 移除,成功移除后,会在消息框显示 元素已从DOM移除了 信息。 下面我们来看一下具体实现: index.html <!...当然利用 MutationObserver API 提供强大能力,我们还可以有其他应用场景,比如防止页面的水印元素被删除,从而避免无法跟踪到 “泄密” 者,当然这并不是绝对安全,只是多加了一层防护措施...具体如何实现水印元素被删除,篇幅有限。这里阿宝哥不继续展开介绍了,大家可以参考掘金上 “打开控制台也删不掉元素,前端都吓尿了” 这一篇文章。

    3.6K20

    Java 和对象,如何定义Java如何使用Java对象,变量

    参考链接: Java对象和 1.对象概念 :万物皆对象,客观存在事物皆为对象  2.什么是面向对象:人关注一个对象,实际上是关注该对象事务信息   3.是模子,确定对象将会拥有的特征(...对象是一个你能够看得到,摸得着具体实体    如何定义Java:  1.重要性:所有Java程序都以class为组织单元  2.什么是是模子,确定对象将会拥有的特征(属性)和行为(方法...方法n;                                           }   Java对象  使用对象步骤:  1.创建对象:      名 对象名 = new 名(); ...      Telphone phone =new Telphone();  2.使用对象    引用对象属性:对象名.属性        phone.screen = 5; //给screen属性赋值...  2.局部变量      在方法定义,在方法临时保存数据  成员变量和局部变量区别  1.作用域不同:        局部变量作用域仅限于定义他方法        成员变量作用域在整个内部都是可见

    6.9K00

    如何使用netstat,lsof和nmap检查Linux开放端口

    目录 使用 netstat 检查开放端口 使用 lsof 检查开放端口 使用 nmap 检查开放端口 在对网络连接或特定于应用程序问题进行故障排除时,首先要检查事情之一应该是系统上实际使用端口以及哪个应用程序正在侦听特定端口...使用 netstat 检查开放端口 netstat (network statistics) 是一个命令行工具,用于监控传入和传出网络连接以及查看路由表、接口统计信息等。...-p:显示侦听器进程PID和名称。仅当你以 root 或 sudo 用户身份运行命令时才会显示此信息。 我们案例重要列是: Proto – 套接字使用协议。...使用 lsof 检查开放端口 lsof 意义 LiSt Open Files’ 用于找出哪些文件被哪个进程打开。在 Linux ,一切都是文件。你可以将套接字视为写入网络文件。...使用 nmap 检查开放端口 nmap, 或者 Network Mapper, 是用于网络探索和安全审计开源 Linux 命令行工具。

    2.3K10

    打开控制台也删不掉元素,前端都吓尿了

    源码搜索研究 在source板块,找到了页面相关js文件,搜索MutationObserver,最后发现一个这样函数: function observeSelector(e) { if...(截图造假、越过权限、暴露数据但有水印) 这个函数可以拿出来做保护元素使用,防止一些前端打开控制台修改元素,然后截图。...如何战胜它 魔改样式 改父节点样式可以解决,但是此页面的水印父节点就是body,改了body,就影响浏览页面了。...死循环的确是会发生使用时候需要注意一下 如果要解决MutationObserver监听document.documentElement阻止挪水印元素,那也还是有办法,documentElement...下新增一个div,水印元素挪到div里面即可 既然加了div越过这一步,那防止也可以再加强,MutationObserver来个一刀切,禁止所有的childList、subtree发生,如果不是水印元素则删除

    1.3K20

    从Vue.nextTick探究事件循环中线程协作机制

    事件循环执行机制为: 1、当js执行栈所有任务执行过程若遇到微任务或宏任务,则将其添加到对应队列; 2、执行栈任务顺序执行完毕后去检查微任务队列是否为空,不为空则把任务按先入先出顺序依次拉取微任务队列中方法到...js执行栈运行; 3、执行栈以及微任务队列都清空后去检查宏任务队列是否为空,不为空把任务按先入先出顺序加入当前执行栈; 4、当执行栈执行完毕后,检查微任务队列是否为空,然后检查宏任务队列是否为空,以此循环至微任务队列...举例为SetTimeout实现过程是在使用SetTimeout设置定时任务后,会将回调添加在延时执行队列,然后用定时器开始计时,计时结束后将延时执行队列回调任务移出到js执行队列,按js执行队列顺序执行...可以看到修改数据后最终是通过nextTick添加了微任务去添加dom更新事件,所以必须使用vue.nextTick才能获取到更新后dom元素,并且这里是还没有渲染。...3、操作dom多次更新(无论是否使用vue双向绑定)应该放在同一轮事件循环的当前js执行栈或微任务,仅需调用一次渲染线程更新dom,避免放在下一轮宏任务

    1K30

    JavaScript 高级程序设计(第 4 版)- DOM

    使用 MutationObserver 可以观察整个文档、 DOM 树一部分,或某个元素。还可以观察元素属性、子节点、文本,或者前三者任意组合变化。...# HTML5 # CSS扩展 getElementsByClassName() 暴露在 document 对象和所有 HTML 元素上 接收一个参数,即包含一个或多个字符串,返回包含相应元素...NodeList 只会返回以调用它对象为根元素子树中所有匹配元素 如果要给包含特定(而不是特定 ID 或标签)元素添加事件处理程序,使用这个方法会很方便 // 取得所有包含"username...(指向文档元素补充, HTML5 增加了 document.head 属性,指向文档元素。...处理函数会在包含数据节点被复制、删除、重命名或导入其他文档时候执行,可以在这时候决定如何处理用户数据。

    1.2K30

    《现代Javascript高级教程》监测DOM变化强大工具

    使用MutationObserver示例 下面通过几个示例来演示如何使用MutationObserver进行DOM变化监测。...4.1 监测元素属性变化 下面的示例代码演示了如何使用MutationObserver监测元素属性变化,并在变化发生后进行相应处理: // 目标元素 const targetElement = document.querySelector...4.2 监测子元素添加或移除 下面的示例代码演示了如何使用MutationObserver监测子元素添加或移除,并在变化发生后进行相应处理: // 目标元素 const targetElement...4.3 监测文本节点内容变化 下面的示例代码演示了如何使用MutationObserver监测文本节点内容变化,并在变化发生后进行相应处理: // 目标元素 const targetElement...然而,考虑到一些老旧浏览器版本,建议在使用MutationObserver之前,检查浏览器兼容性。

    26430

    浏览器 5 种 Observer,你用过几种?

    那么对于一些不是由用户直接触发事件呢?比如元素从不可见到可见、元素大小改变、元素属性和子节点修改等,这类事件如何监听呢?...我们分别来看一下: IntersectionObserver 一个元素从不可见到可见,从可见到不可见,这种变化如何监听呢? 用 IntersectionObserver。...而监听元素属性和子节点变化,我们可以用 MutationObserverMutationObserver 可以监听对元素属性修改、对它子节点增删改。...浏览器跑一下: 可以看到在三次变化时候都监听到了并打印了一些信息: 第一次改变是 attributes,属性是 style: 第二次改变是 childList,添加了一个节点: 第三次也是改变...浏览器提供了这 5 种 Observer: IntersectionObserver:监听元素可见性变化,常用来做元素显示数据采集、图片懒加载 MutationObserver:监听元素属性和子节点变化

    1K41

    MutationObserver接口-1-基本用法

    只能说是比较典型观察者模式了(个人只是简单了解过一点点设计模式,有误请评论)。 基本用法 使用MutationObserver可以观察整个文档、DOM树一部分或某个元素。...使用MutationObserver需要通过MutationObserver构造函数实例化对象,参数是一个回调函数。...const observer = new MutationObserver(() => { console.log('DOM元素有变化') }) observer.observe(document.body...,再打印DOM元素有变化 上面设置了观察body元素属性变化,所以修改className属性时会触发注册回调函数,另外回调函数是异步执行,所以会先打印script。...首先,observer.observe()添加观察,之后遇到了两个定时器,因为是异步任务所以添加到任务队列。也就是说此时不会结束观察,最后属性设置就会触发回调函数。

    52320

    如何使用Selenium Python爬取动态表格复杂元素和交互操作

    本文将介绍如何使用Selenium Python爬取动态表格复杂元素和交互操作。...Selenium可以模拟用户交互操作,如点击按钮,选择选项,滚动页面等,从而获取更多数据。Selenium可以通过定位元素方法,如id,class,xpath等,来精确地获取表格数据。...定位表格元素使用driver.find_element_by_id()方法找到表格元素,其id为'eventHistoryTable'。...获取表格所有行:使用find_elements_by_tag_name('tr')方法找到表格所有行。创建一个空列表,用于存储数据:代码创建了一个名为data空列表,用于存储爬取到数据。...通过DataFrame对象,可以方便地对网页上数据进行进一步处理和分析。结语通过本文介绍,我们了解了如何使用Selenium Python爬取动态表格复杂元素和交互操作。

    1.3K20

    MutationObserver接口-2-观察范围

    MutationObserver接口(二) 观察范围 观察范围 上一节,我们使用MutationObserver时,都只是观察节点属性。...首先,innerText是元素节点属性,表示一个节点及其后代“渲染”文本内容。而textContent是节点属性,表示节点一个节点及其后代文本内容。 举个小例子,说明他们两区别。...> 差异: innerText属性不会获取display为none隐藏元素,而textContent会获取。...= '789' 观察前设置innerText值也能被观察到 oldValue不再是旧值,而是设置新值 上面开始观察后,使用是textContent,因为使用innerText又会导致另一个...属性可以查看到添加节点 box.innerHTML = '' // 使用innetHTML还会移除节点,表现为removedNodes中有被移除节点

    42620

    借助腾讯混元助手屏蔽简书登录框

    如下图:所以如果想要去除登陆框,要做就是在登陆框弹出时,移除尾部div,并把bodystyle改为none。问题是,如何判断登陆框弹出时?...哈哈哈,我不会,但是我知道谁会,找到腾讯混元助手,如下提问使用 js 写一个暴力猴脚本,当 body style="overflow: hidden;"时,马上变为body style="none...而移除尾部div,同样,我们让腾讯混元助手帮我们实现,告诉他使用 js 写一个暴力猴脚本,当body 里 class="__copy-button" div后面有新增 div 时,移除那个新增 div...">;首先来看第一种方式,告诉混元助手:"使用 js 写一个暴力猴脚本,移除第二个class="ouvJEz" section",如下图:然后加入到暴力猴脚本测试,发现不生效;什么原因呢?...判断可能是因为移除时,数据还请求返回,等数据返回时,又重新把这个section添加了回来;简单说,就是删早了。

    28230

    现代浏览器观察者 Observer API 指南

    rootMargin:使用类似于设置CSS边距语法来指定根边距(根元素观察影响范围) ?...出现意义 ? 归根究底,是MutationEvents功能不尽人意: 在MDN也写到了,是被DOM Event承认在API上有缺陷,反对使用。 核心缺陷是:性能问题和跨浏览器支持。...MutationObserver 基本使用 使用MutationObserver API主要需要三个步骤: 创建观察者 定义回调函数 定义要观察目标对象 1....出现意义 开发过程当中经常遇到一个问题就是如何监听一个 div 尺寸变化。 但众所周知,为了监听 div 尺寸变化,都将侦听器附加到 window resize 事件。...为了解决上述问题,在Performance Timeline Level 2,除了扩展了Performance基本定义以外,还增加了PerformanceObserver接口。 2.

    3.8K40

    微任务、宏任务与Event-Loop

    (1) +}).then(_ => { - console.log(3) +}) +console.log(2) 本来setTimeout已经先设置了定时器(相当于取号),然后在当前进程又添加了一些...按照代码注释,在同步代码已经执行完以后,这时就会去查看是否有微任务可以执行,然后发现了Promise和MutationObserver两个微任务,遂执行之。...一些小惊喜 使用上述示例代码,如果将手动点击DOM元素触发方式变为$inner.click(),那么会得到不一样结果。...在使用方面的一个最常见例子就是一些事件绑定操作: class Lib extends require('events').EventEmitter { constructor () {...() 浏览器EventLoop说明文档 NodeEventLoop说明文档 requestAnimationFrame | MDN MutationObserver | MDN

    72720

    JS黑科技:水印防删

    为了保护版权、防截图、防拍照等,有些我们会给网页视频、图片或文字加水印。...实现方式,可能有多种,比如:对图片、视频而言,可以在服务端完成水印,但对于文字信息,一般只能在前端页面中进行水印添加。 本文分享一种图层式防删水印技术。...取巧是用MutationObserver对水印进行监控和重置。...MutationObserver是一个很有创意接口,它可以监听页面元素变化,任何元素修改,如节点增减、属性值更新、文本内容改动都会触发MutationObserve事件,在本例,会监测两种事件...注:本文演示是给div添加水印,实际应用此技术时,水印可添加给任意种类元素内容。

    1.6K30

    如何在页面监听“不存在” DOM 节点

    本文将介绍 MutationObserver 基本原理、使用方法和应用场景,帮助读者更好地理解和应用这个灵活且强大 API。...变动观察器MutationObserver 是 Web API 一个接口,用于监测 DOM 树变化。它可以观察特定节点或其子节点任何更改,例如添加、删除或修改子节点、属性变化、文本变化等等。...document.body// 创建一个新 MutationObserverconst observer = new MutationObserver(() => { if (document.getElementById...,无论水印被何种方式删除,都可以监听到然后把它还原回去~同理,如果页面插入第三方广告,也可以用来检查广告是否被屏蔽等。...总结MutationObserver 优点在于它可以捕获多种类型 DOM 变化,包括元素添加、删除、属性更改、文本内容变化等,而不需要显式地监听每一种变化类型,这意味着它更灵活、更可靠,并且可以适应各种应用场景

    1.3K40
    领券