jsFiddle
上面的脚本无法正常工作。
我想将DOMNodeInserted(Line19)替换为MutationObserver(line21),但是当我使用MutationObserver时,它不起作用。
// Line 19 (works well)
document.body.addEventListener('DOMNodeInserted', function (event) {linkifyContainer(event.target);}, false);
// Line 21 (does not work)
var observer=new window.MutationObserver(function(mutations){mutations.forEach(function(mutation){linkifyContainer(mutation.addedNodes)})});observer.observe(document.body,{childList:true,subtree:true});
第21行应该有问题,但是我不知道问题是什么以及我应该怎么做。
我用chrome28和firefox23进行了检查。
它是chrome的扩展,因此我不必使用“ WebKitMutationObserver”或“ MozMutationObserver”。
请告诉我解决方案。
最佳答案
您的变异观察者代码可以正常工作。您试图为linkifyContainer
传递NodeList
参数(即mutation.addedNodes
),但是linkifyContainer
希望传递单个元素。
比较通话:
linkifyContainer(event.target)
和
linkifyContainer(mutation.addedNodes)
第二种情况是
NodeList
,而不是单个DOM节点,如复数属性名称addNodes所示。只需使用
mutation.addedNodes[0]
,或在mutation.addedNodes
上循环:for(var i=0; i<mutation.addedNodes; ++i) {
linkifyContainer(mutation.addedNodes[i]);
}