JS實時監聽DOM元素變化 - MutationObserver

使用 MutationObserver API實時監聽DOM元素變化

創建 MutationObserver 實列,接受一個用于監聽到DOM元素變化的回調函數

const handleListenChange = (mutationsList, observer) => {console.log(mutationsList, observer)
}
const mutationObserver = new MutationObserver(handleListenChange)

mutationsList為DOM元素所有變化的列表集合,列表元素包含以下屬性

  • type:元素變化類型(attribute、characterData、childList…)。
  • target:發生變動的DOM節點。
  • addedNodes:新增的DOM節點。
  • removedNodes:刪除的DOM節點。
  • previousSibling:前一個同級節點,如果沒有則返回null。
  • nextSibling:下一個同級節點,如果沒有則返回null。
  • attributeName:發生變動的屬性。如果設置了attributeFilter,則只返回預先指定的屬性。
  • oldValue:變動前的值。這個屬性只對attribute和characterData變動有效,如果發生childList變動,則返回null。

開啟監聽

const element = document.querySelector('#')
const options = {attributes: true,childList: true,subtree: true
}
mutationObserver.observe(element, options)

element為需要監聽的DOM對象
options為需要監聽該DOM對象哪些變化,有以下幾種

  • childList:子節點的變動(指新增,刪除或者更改)。
  • attributes:屬性的變動。
  • characterData:節點內容或節點文本的變動。
  • subtree:布爾值,表示是否將該觀察器應用于該節點的所有后代節點。
  • attributeOldValue:布爾值,表示觀察attributes變動時,是否需要記錄變動前的屬性值。
  • characterDataOldValue:布爾值,表示觀察characterData變動時,是否需要記錄變動前的值。
  • attributeFilter:數組,表示需要觀察的特定屬性(比如['class','src'])。

停止監聽

mutationObserver.disconnect();

清除變動記錄并返回記錄值

const changes = mutationObserver.takeRecords();
console.log(changes);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281224.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LightOJ - 1027 A Dangerous Maze —— 期望

題目鏈接:https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous MazePDF (English)StatisticsForumTime Limit: 2 second(s)Memory Limit: 32 MBYou are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The p…

MASA MAUI Plugin (六)集成個推,實現本地消息推送[Android] 篇

背景MAUI的出現,賦予了廣大.Net開發者開發多平臺應用的能力,MAUI 是Xamarin.Forms演變而來,但是相比Xamarin性能更好,可擴展性更強,結構更簡單。但是MAUI對于平臺相關的實現并不完整。所以MASA團隊開展了一個實驗性項目…

第八天

配置文件 Vi /etc/fstab /dev/vg01/lv01 /dir01 ext4 defaults mount -a 掃描 使用交換空間 1.創建分區 2.mkswap /dev/sda創建交換分區 3.swapon /dev/sda啟用交換分區 Linux系統啟動過程 1、引導程序 BIOS自檢 (硬件自檢) 2、G…

iOS 通知中心(NSNotificationCenter)

NSNotificationCenter 在這里第一步和第二步的順序可以互換,一般樓主我喜歡先在需要發送消息的頁面發送消息,然后再在需要監聽的頁面注冊監聽。要注意的是不管是通知中心還是KVO都需要在頁面銷毀之前移除監聽。 注冊觀察者/*** 觀察者注冊消息通知*…

vue-router和react-router嵌套路由layout配置方案的區別

最近在學習react,在路由這一塊有點看不懂,第一感覺是靈活性很大,想怎么來就怎么來,但問題也來了,稍微復雜一點就GG了,不如vue的傻瓜式配置來的方便。 先說一下vue的路由配置方式,目錄結構如下&…

微軟加更.NET7中文手冊,都有哪些新亮點?

11月8號發布了.NET7,從底層性能改進,到上層API升級,讓.NET7綜合性能再度提升!同時發布了最新的C#11,也帶來了很多小驚喜。如何快捷學習最新的.NET7和C#11?答案只有一個,微軟官方中文文檔&#x…

jquery對json的各種遍歷

http://caibaojian.com/jquery-each-json.html轉載于:https://www.cnblogs.com/pxffly/p/8442448.html

中級工程師之路

前言:之前在問答中問了一個問題 畢業半年感覺沒什么進步該怎么辦? 這個問題一直讓我感覺比計較焦慮。于是在一個關于面試經驗的博客中找到了一些靈感。就是通過問題進行學習,對自身的知識體系進行整理和補充。以問題作為切入點,不…

Vue在渲染函數createELement和JSX中使用插槽slot

Vue對于插槽有兩個專門的APIvm.$slots和vm.$scopedSlots,分別是普通插槽和作用域插槽,使用JSX語法或渲染函數的時候,定義插槽將使用上述兩個API。 渲染函數createElement 普通插槽和作用域插槽在定義上相差不大,但是在使用方法上…

.NET Conf China 2022 第一批講師陣容大揭秘!整個期待了!

目光看過來2022年12月3-4日一場社區性質的國內規模最大的線上線下.NET Conf 2022技術大會即將盛大開幕目前大會正緊鑼密鼓地進行中第一批大咖講師及主題已確定小編迫不及待想和大家分享分享嘉賓很大咖分享內容很硬核戳戳小手期待ing孔令磊維宏股份 首席架構師 十多年數控領域研…

2017 Material design 第二章第六節《富有創造性的定制方案》

六、富有創造性的定制方案(Creative customization) 動效可以應用于不同的對象尺寸和不同的環境,這有助于設計美感和功能的統一。 icon的類型系統icons可以有雙重功能。 產品icons應該設計得精致、美觀。 Icons 系統icons一個系統icon也許存在…

(十四)Java springcloud B2B2C o2o多用戶商城 springcloud架構- Spring Cloud構建分布式電子商務平臺...

通過Spring Cloud構建PC微信APP云服務的云商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺,之前我們講了很多關于Spring Cloud的概念文章,從本節開始,我們會以分布式微服務電子商務平臺為案例,逐步給…

C# 隊列(Queue)

概述隊列(Queue)代表了一個先進先出的對象集合。當您需要對各項進行先進先出的訪問時,則使用隊列。當您在列表中添加一項,稱為入隊,當您從列表中移除一項時,稱為出隊。Queue 類的方法和屬性Count 獲取 Queu…

vue完全編程方式與react在書寫和運用上的異同

在構建html元素時,vue傾向于模板方式,而react則完全使用javascript的編程能力,但vue也具備完全編程的能力(與react一樣使用JSX和createElement渲染函數)。所以,當vue使用完全編程方式時,與react…

Solr 配置文件之schema.xml

schema.xml這個配置文件的根本目的是為了通過配置告訴Solr怎樣建立索引。solr的數據結構例如以下:document:一個文檔、一條記錄 field:域、屬性solr通過搜索某個或某些field,返回若干個符合條件的document。或者按搜索的score排序…

wget整站抓取、網站抓取功能;下載整個網站;下載網站到本地

wget -r -p -np -k -E http://www.xxx.com 抓取整站 wget -l 1 -p -np -k http://www.xxx.com 抓取第一級 -r 遞歸抓取-k 抓取之后修正鏈接,適合本地瀏覽 http://blog.sina.com.cn/s/blog_669fb0c3010137bq.html wget -m -e robotsoff -k -E "http://…

Git標簽tag及tag遠程同步

Git給某個歷史版本打上標簽,這樣我們可以快速的眾多歷史版本中找到自己需要的版本,一般打標簽的版本都是發布版本,例如v1.0.0 標簽操作 創建標簽 # 輕量標簽 git tag tagname eg: git tag v1.4# 附注標簽 git tag -a tagname -m tag descr…

妙用SQL Server聚合函數和子查詢迭代求和

先看看下面的表和其中的數據:t_product該表有兩個字段:xh和price, 其中xh是主索引字段,現在要得到如下的查詢結果:從上面的查詢結果可以看出,totalprice字段值的規則是從第1條記錄到當前記錄的price之和。如…

記一次.NET某工控圖片上傳CPU爆高分析

一:背景 1.講故事今天給大家帶來一個入門級的 CPU 爆高案例,前段時間有位朋友找到我,說他的程序間歇性的 CPU 爆高,不知道是啥情況,讓我幫忙看下,既然找到我,那就用 WinDbg 看一下。二&#xff…

微信小程序項目實踐準備工作

微信小程序項目實踐準備工作一、了解微信小程序產品定位及功能介紹微信小程序是一種全新的連接用戶與服務的方式,它可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。簡單的說,小程序是微信附屬產品,需要依賴微信&#xf…