日韩性视频-久久久蜜桃-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电影 | 午夜三区| 青青草娱乐视频 | 后进极品美女白嫩翘臀 | h网站在线播放 | 人妻体内射精一区二区三区 | 欧美日韩高清丝袜 | 国产精选网站 | 在线日韩视频 | 男女又爽又黄 | 好吊日精品视频 | 菲律宾av| 色吧综合 | 欧美成人精品欧美一级乱 | 男人操女人的视频 | 国产精品一二区在线观看 | 日本丰满熟妇bbxbbxhd | 欧美日韩一卡 | 日本高清三区 | 青青草综合 | 本道综合精品 | 日韩av中文在线观看 | 亚洲在线免费观看 | 浪漫樱花动漫在线观看免费 | 男人的天堂手机在线 | 五级黄高潮片90分钟视频 | www.rihan| 风间由美一二三区av片 | 一区二区三区国 | 狠狠撸在线视频 | 亚洲天堂免费av | 91精品视频在线播放 | 欧美日韩欧美日韩在线观看视频 | 国产丝袜美女 | 婷婷综合在线观看 | 久久99操| 亚洲欧美在线不卡 | 91免费网站入口 | 成年人免费黄色 | 中文字幕手机在线视频 | 蜜臀久久99精品久久久无需会员 | 成人网站免费观看 | 久久福利网 | 日韩一区欧美二区 | 少妇特黄一区二区三区 | 警察高h荡肉呻吟男男 | 欧美无吗| 国产一二三级 | juliaann第一次和老师 | 欧美日韩不卡一区二区 | 国产亚洲精品自拍 | 日韩欧美国产综合 | 精品国产免费人成在线观看 | 国产欧美视频一区 | 欧美性猛交ⅹ乱大交3 | 久久久久女人精品毛片九一 | av在线大全 | 久久a毛片 | 国产精品久久久久久久久久久久午夜片 | 亚洲精品成人a | 一级片免费视频 | 2019最新中文字幕 | 国产黄色免费视频 | 好吊一区二区三区视频 | 麻豆影视在线 | 五月婷婷在线观看视频 | 国产理论片在线观看 | 久久人人爽人人爽人人片 | 一级免费观看 | 人与动物黄色片 | 亚洲美女性生活视频 | 亚洲高清视频一区二区 | 欧美一级片黄色 | 91视频免费 | 精品少妇久久久 | 一级毛片儿 | 欧美日韩一级视频 | 偷拍久久久 | 国产女18毛片多18精品 | 日本动漫艳母 | 日本一级二级视频 | 国产精品111 | 在办公室被c到呻吟的动态图 | 91色网站 | 日韩视频在线视频 | 久久免费视频一区二区 | 欧美激情网 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 奴色虐av一区二区三区 | 内射无码专区久久亚洲 | 欧洲色av| 国产熟妇另类久久久久 | 欧美精品免费在线观看 | 欧美黑粗大 | 国产一区二区自拍 | 欧美黑人巨大xxx极品 | 欧美日韩国产三区 |