我有一个脚本,我在Adobe Captivate的第一张幻灯片上使用,自动执行任务ok创建,课程,脚本创建UX,导航元素,介绍/结束动作,游戏,插入带有字符的spritesheets等等......
我使用DOMNodeInserted直到知道检查幻灯片上的修改,当用户转到下一张幻灯片时,元素被添加到DOM并且页面内容被更改我使用此计时器直到现在才调用功能:
function detectChange(){
var slideName = document.getElementById('div_Slide')
slideName.addEventListener("DOMNodeInserted", detectChange, false);
updateSlideElements();
setTimeout(updateSlideElements, 100);
}
所以我现在尝试使用变异Observer:
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]');
这个元素是第一个孩子:
可以找到元素:
但现在使用mutationObserver,控制台返回空:
答案 0 :(得分:0)
我只是在观察者中使用setTimeout并观察父容器而不是firstChild:
var observer = new MutationObserver(function(mutations, observer) {
setTimeout(updateSlideElements, 100);
});
observer.observe(document.getElementById('div_Slide'), {
attributes: true,
childList:true
//subtree:true
});