我想跟踪一些特殊的标签,UI组件,例如<颜色>,<日期>,因此建立和插入到DOM元素等的时候,我可以把它转换成。真正的功能HTML块parentNode是空与MutationObserver.observe(document.body的
这里的代码,观察addedNodes上document.body的
function handleAddedNodes(nodes) {
[].forEach.call(nodes, function(node) {
if (!node.tagName)
return;
//how is it possible, node.parentNode is null?????
if (!node.parentNode) {
return;
}
});
}
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
handleAddedNodes(mutation.addedNodes);
});
});
observer.observe(document.body, {
childList : true,
subtree : true
});
预期它工作正常,但我也发现了一个奇怪的问题:没有parentNode一些addedNodes(如“观察( document.body“表示addedNodes应该是document.body的后代,对吧?)
整个函数作为一个大型前端项目的插件,我不知道项目如何改变DOM,设置innerHTML或appendChild(这里的代码太多)。它也不能被调试,因为观察函数是异步的,如事件,没有函数调用堆栈。
所以我只想知道什么可能会导致这个问题,并且
更好,如果它可以用jsFiddle
复制。
好,似乎jsFiddle可以重现此,
那么如何立即(比下一个setImmediate被触发的更快)删除了一些元素? – Andrew
@安德鲁抱歉很忙,看到更新 – megawac
好的,我明白了。谢谢。 – Andrew