Mutation Observer優點
利用Mutation Observer可以監聽DOM屬性節點或者子節點的增加或者刪除等變化。
Mutation Observer是DOM4增加,也就是HTML5新增的API。
與之類似,DOM3增加的Mutation Events也可以完成類似功能。
由於存在一系列問題,W3C已經將Mutation Events廢棄,不過當前依然得到部分瀏覽器支援。
更多關於HTML5內容可以參閱HTML5 API版塊。
一.Mutation Events:
首先簡單介紹一下Mutation Events,它能夠監聽DOM樹結構的變化。
程式碼片段如下:
[JavaScript] 純文字檢視 複製程式碼document.getElementById("ant").addEventListener("DOMSubtreeModified", function () { console.log("螞蟻部落"); }, false);
子節點被修改,那麼就會在控制檯輸出"螞蟻部落"。
當然Mutation Events還包括其他不少事件,這裡就不介紹了。
主要缺點如下:
(1).瀏覽器相容性問題很大,並且W3C已經將其廢棄。
(2).效能較差,Mutation Events是同步操作,節點的每次變動,都會觸發事件,如果節點連續進行一萬次變動,那麼事件會連續觸發一萬次,執行一萬次回撥函式,很有可能導致瀏覽器卡頓的現象。
(3).Mutation Events是真正的事件,存在冒泡現象,可能會觸父級Mutation Events事件,導致一些問題。
二.Mutation Observer:
它被用來替代Mutation Events,所有的監視操作會在其他指令碼執行完畢後非同步執行。
所有的變化都記錄在陣列中,最後統一使用回撥函式處理,例如一個dom元素進行了若干變化,每一次變化都會暫時儲存在一個陣列中,等所有指令碼執行完成,通過回撥函式來統一執行每一次變化對應的動作。
特別說明:Mutation Observer在功能上類似於事件,但是並不是真正的事件。
瀏覽器相容性:
從上圖看,Mutation Observer的瀏覽器支援度還是非常不錯的。
主要優點如下:
(1).瀏覽器相容性更好。
(2).因為是非同步操作,所以效能會更好。
相關文章
- Mutation Observer用法Server
- 監聽Dom節點變化 - Mutation ObserverServer
- Mutation Observer儲存原有的值Server
- 看了Observer,仍不懂,高手指點Server
- ORM Observer 使用小結(坑點預警)ORMServer
- 應用Observer介面實踐Observer模式Server模式
- 前端曝光資料埋點——Intersection Observer+vue指令前端ServerVue
- Java:應用Observer介面實踐Observer模式薦JavaServer模式
- [Vuex系列] - Mutation的具體用法Vue
- vuex 原始碼:深入 vuex 之 mutationVue原始碼
- Observer原始碼解析Server原始碼
- ora.ctssd OBSERVERServer
- Vuex中使用報錯unknown mutation typeVue
- Java中使用Observer介面和Observable類實踐Observer觀察者模式JavaServer模式
- observer pattern 之我見Server
- observer-觀察者模式Server模式
- hbase單表加ObServerServer
- 設計模式----Observer模式設計模式Server
- Observer模式的問題Server模式
- 理解 JavaScript Mutation 突變和 PureFunction 純函式JavaScriptFunction函式
- vuex的 State ,Mutation ,Action ,Getter ,Module用途,關係Vue
- 第十一屆河南ACM Gene mutation(模擬)ACM
- vuex 基本入門和使用(三)-關於 mutationVue
- OBServer啟動恢復解析Server
- 懶載入之intersection observerServer
- vue observer 原始碼學習VueServer原始碼
- 看了設計模式之Observer設計模式Server
- 30天學RxSwift——ObserverSwiftServer
- banq 你好,請教Observer模式Server模式
- OkHttp優點HTTP
- Nginx優點Nginx
- 我工作的那點事--學習《設計模式》例項應用(Observer模式)設計模式Server
- Laravel 中模型事件 Observer 的使用Laravel模型事件Server
- 設計模式:觀察者模式(observer)設計模式Server
- Laravel 中的模型事件與 ObserverLaravel模型事件Server
- Observer Design Pattern in C#! (轉)ServerC#
- Java Q&A: 使用Observer模式 (轉)JavaServer模式
- HTTPS 優點與缺點HTTP