2016-10-17 87 views
0

我有一個腳本,我在Adobe Captivate的第一張幻燈片上使用,自動完成任務,創建課程,腳本創建UX,導航元素,介紹/結束動作,遊戲,插入spritesheets與字符等...Mutation Observer或DOMNodeInserted

我已經使用DOMNodeInserted知道檢查幻燈片上的修改,當用戶轉到下一張幻燈片,元素被添加到DOM和頁面內容被改變從來就用這個計時器到現在爲止調用的函數:

function detectChange(){ 
 
\t var slideName = document.getElementById('div_Slide') 
 
\t 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 
 
});

但這是what's發生的,與之前的setTimeout我能達到以下元素:

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

此元素的則firstChild:

enter image description here

和元素,可以發現:

enter image description here

但是現在有了mutationObserver控制檯返回空:

enter image description here

回答

0

我只是使用setTimeo UT觀察者裏面,看父容器不是則firstChild:

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