日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

MutationObserverAPI--微任务

發(fā)布時(shí)間:2024/6/21 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 MutationObserverAPI--微任务 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 作用

MutationObserverAPI可以看作一個(gè)監(jiān)聽(tīng)DOM所有變化(包含節(jié)點(diǎn)、屬性、文本內(nèi)容的變動(dòng))的接口。

和EventTargetAPI的addEventListener相比:

共同點(diǎn): 兩者的回調(diào)函數(shù)執(zhí)行都是異步任務(wù),都要在主執(zhí)行棧之后執(zhí)行;

不同點(diǎn)

1. addEventListener的回調(diào)函數(shù)會(huì)進(jìn)入宏任務(wù)隊(duì)列;

MutationObserver的回調(diào)函數(shù)會(huì)進(jìn)入微任務(wù)隊(duì)列

2.addEventListener的觸發(fā)方式是同步觸發(fā);比如,點(diǎn)擊后,回調(diào)函數(shù)立即進(jìn)入宏任務(wù)隊(duì)列。

MutationObserver的監(jiān)聽(tīng)是異步觸發(fā),在所有的DOM操作完成后才觸發(fā)使回調(diào)函數(shù)進(jìn)入微任務(wù)隊(duì)列。

比如,程序中有10個(gè)修改DOM的操作,只有在第十個(gè)處理完之后,回調(diào)函數(shù)才進(jìn)入微任務(wù)隊(duì)列。

    const observer = new MutationObserver(function (mutations, observer) {
      console.log(mutations);//[{type: 'childList',.....}]
    })
    observer.observe(root, {
      childList: true,
      subtree: true
    })
    const p = Promise.resolve();
    root.appendChild(document.createElement('div')); 
    // DOM操作執(zhí)行完成,觸發(fā)觀察回調(diào)
    p.then(() => {
      console.log('d')
    })
// 運(yùn)行結(jié)果
d
[{type:  .......}]

2. 使用

MutationObserver,顧名思義,是變化觀察器。它是一個(gè)構(gòu)造函數(shù),使用時(shí)需要?jiǎng)?chuàng)建實(shí)例對(duì)象,生成一個(gè)觀察器。

// callback是監(jiān)聽(tīng)回調(diào)函數(shù),當(dāng)主執(zhí)行棧結(jié)束后觸發(fā)
// 第一個(gè)參數(shù)是所有變化產(chǎn)生的變化對(duì)象的一個(gè)數(shù)組,第二個(gè)參數(shù)是觀察器本身
const observer = new MutationObserver(function(mutations, observer) {
});

DOM變化會(huì)產(chǎn)生一條變化記錄,它是一個(gè)MutationRecord對(duì)象的實(shí)例。

上面的mutations是MutationRecord實(shí)例對(duì)象的一個(gè)集合。

它包含以下屬性:

target: 當(dāng)前變化的節(jié)點(diǎn)
type: 變化類(lèi)型;包含charactorData,childList, attributes三種
addNodes: 新增的節(jié)點(diǎn); 默認(rèn)[]
removeNodes: 刪除的節(jié)點(diǎn);默認(rèn)[]
previousSibling: 前一個(gè)同級(jí)節(jié)點(diǎn); 默認(rèn)null
nextSiblings: 后一個(gè)同級(jí)節(jié)點(diǎn);默認(rèn)null
attributeName: 發(fā)生變化的屬性
oldValue: 變化前的值

MutationObserver.prototype.observe是一個(gè)實(shí)例方法,用來(lái)啟動(dòng)監(jiān)聽(tīng)器,并指定監(jiān)聽(tīng)對(duì)象,設(shè)置監(jiān)聽(tīng)參數(shù)。

所以該方法的調(diào)用一定要在所有的DOM操作的最上方,否則監(jiān)聽(tīng)不到變化。

observer.observer(element, options);

element:

監(jiān)聽(tīng)的DOM對(duì)象

options:

指定觀察的具體內(nèi)容:(3個(gè)至少指定一個(gè),否則報(bào)錯(cuò))對(duì)應(yīng)的值都是布爾值。

1. childList (子節(jié)點(diǎn))

還有對(duì)應(yīng)該配置的補(bǔ)充配置:subtree,指定是否是所有的后代節(jié)點(diǎn)

2. attributes (屬性)

還有對(duì)應(yīng)該配置的補(bǔ)充配置:

attributeOldValue:指定是否記錄觀察前的屬性值

attributeFilter: 一個(gè)數(shù)組,指定觀察的屬性值

3. charactorData(節(jié)點(diǎn)內(nèi)容)

還有對(duì)應(yīng)該配置的補(bǔ)充配置:

charactorDataOldValue: 指定是否記錄變化前的節(jié)點(diǎn)內(nèi)容

示例:

  <div id="root"></div>
  <script type="module">
    const observer = new MutationObserver(function (mutations, observer) {
      console.log(mutations);//[{type: 'childList',.....}]
    })
    observer.observe(root, {
      childList: true,
      subtree: true
    })
    root.appendChild(document.createElement('div'))
  </script>

3. 實(shí)例方法

1.disconnect()

該方法調(diào)用后,關(guān)閉監(jiān)聽(tīng)

2.takeRecords()

刪除未處理的變化

4. 應(yīng)用

1. 觀察節(jié)點(diǎn)和屬性的變化

2.取代DOMContentLoaded事件

總結(jié)

以上是生活随笔為你收集整理的MutationObserverAPI--微任务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天国产视频 | 天天做夜夜爽 | 哺乳援交吃奶在线播放 | 亚洲AV成人无码久久精品同性 | 2018自拍偷拍 | 欧美91看片特黄aaaa | 91在线无精精品白丝 | 制中文字幕音影 | 亚洲无码乱码精品国产 | 色天天 | 女性向小h片资源在线观看 日本天天操 | 自拍偷拍20p | 美日韩在线 | 男人插女人免费视频 | 国产人久久人人人人爽 | 天堂中文字幕在线 | 九九久久国产精品 | 免费黄在线看 | 日本黄色aaa | 色片免费看 | 欧美图片一区二区三区 | www.久久网 | 久久久久久久久99 | 亚洲一区二区在线播放 | 成人性生交大免费看 | 九九热中文字幕 | 久久人人爽人人 | 三级特黄视频 | 妺妺窝人体色www在线下载 | 色老大视频 | 欧美激情videos| 精品96久久久久久中文字幕无 | 午夜精品久久久久久久96蜜桃 | 扒开jk护士狂揉免费 | 人人妻一区二区三区 | 国产日本欧美在线 | 色导航在线 | 专干中国老太婆hd | 久久久久久国产精品 | 国产午夜精品视频 | 亚洲乱码国产乱码精品精 | 黄色一级片在线免费观看 | 亚洲品质自拍视频网站 | 欧美裸体网站 | 亚洲精品福利在线观看 | 在线亚洲色图 | 亚洲视频在线观看免费 | 天堂资源av| 亚洲成人av一区二区三区 | www.中文字幕 | 伊人久久久久噜噜噜亚洲熟女综合 | 免费av小说 | 国产视频一二三区 | 三级做爰第一次 | 久久婷婷五月综合色国产香蕉 | 亚洲男人天堂2022 | 国产丝袜一区二区 | 欧美成人毛片 | 91精品国产欧美一区二区成人 | 午夜少妇视频 | 91免费网站在线观看 | 大胸美女被爆操 | 国产网站在线免费观看 | 日本美女全裸 | 欧美在线视频a | 黑人中文字幕一区二区三区 | av在观看 | 亚洲www.| 日韩激情一区二区三区 | 青青草精品在线视频 | 亚洲制服丝袜诱惑 | av电影免费在线播放 | 国产午夜精品福利视频 | 极品国产91在线网站 | 高跟91娇喘 | h片在线观看免费 | 97精品一区二区 | 日本黄色特级片 | 欧美性猛交99久久久久99按摩 | 99精品欧美一区二区 | 欧美精品系列 | 亚洲深夜av | 视频一区国产 | 欧美jizzhd欧美18 | 91在线网| 久久精品色欲国产AV一区二区 | 亚州福利| 亚洲粉嫩| 娇妻玩4p被三个男人伺候电影 | 高清一区二区三区四区 | 美女隐私无遮挡网站 | 免费三级在线 | 老司机在线免费视频 | exo妈妈mv在线播放免费 | 欧美交换国产一区内射 | 婷婷综合五月 | 久久久久久香蕉 | 中文有码在线播放 | 欧美在线视频不卡 |