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]);
}

10-07 18:01