MutationObserver API 讓我們能監(jiān)聽 DOM 樹變化,該 API 設計用來替換掉在 DOM 3 事件規(guī)范中引入的 Mutation events。
Mutation events 是同步觸發(fā)的,每次變動都會觸發(fā)一次調(diào)用。 MutationObserver API 是異步觸發(fā)的, DOM 的變動并不會馬上觸發(fā),而是要等到當前所有 DOM 操作都結束才觸發(fā)。所以 MutationObserver 相比 Mutation events 性能要更高。
// 創(chuàng)建一個 MutationObserver 實例,監(jiān)聽樣式變化
this.dialogDomServer = new MutationObserver((mutationsList, observer) => {
mutationsList.forEach((mutation) => {
// mutation.target
// mutation.type
})
})
// 開始監(jiān)聽樣式變化
this.dialogDomServer.observe(dialogDom, {
attributes: true,
attributeFilter: ['style']
})
參考: