簡體   English   中英

突變觀察者或DOMNodeInserted

[英]Mutation Observer or DOMNodeInserted

我在Adobe Captivate的第一張幻燈片上使用了一個腳本,用於自動完成創建,課程,腳本創建UX,導航元素,前/后動作,游戲,插入帶有角色的Spritesheet等任務。 ..

我一直使用DOMNodeInserted直到知道檢查幻燈片上的修改為止,當用戶轉到下一張幻燈片時,將元素添加到DOM中,並且更改了頁面內容,直到現在我都使用此計時器來調用該函數:

 function detectChange(){ var slideName = document.getElementById('div_Slide') slideName.addEventListener("DOMNodeInserted", detectChange, false); updateSlideElements(); setTimeout(updateSlideElements, 100); } 

因此,我現在嘗試使用變異觀察者:

 var observer = new MutationObserver(function(mutations, observer) { updateSlideElements(); }); observer.observe(document.getElementById('div_Slide').firstChild, { attributes: true, childList:true }); 

但這是正在發生的事情,在使用setTimeout之前,我可以達到以下元素:

 var motionText2 = document.querySelectorAll('div[id*=motion][class=cp-accessibility]'); 

該元素是以下項的firstChild:

在此處輸入圖片說明

可以找到該元素:

在此處輸入圖片說明

但是現在使用mutationObserver,控制台將返回空:

在此處輸入圖片說明

我只是在觀察者內部使用了setTimeout,並觀看了父容器而不是firstChild:

 var observer = new MutationObserver(function(mutations, observer) { setTimeout(updateSlideElements, 100); }); observer.observe(document.getElementById('div_Slide'), { attributes: true, childList:true //subtree:true }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM