Mutation Observer不起作用

时间:2013-08-28 15:12:58

标签: javascript dom mutation-observers

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”。

请告诉我这个问题。

1 个答案:

答案 0 :(得分:0)

你的变异观察者代码工作正常。您正在尝试传递linkifyContainer NodeList个参数(即mutation.addedNodes),但linkifyContainer期望传递一个元素。

比较来电:

linkifyContainer(event.target)

linkifyContainer(mutation.addedNodes)

第二种情况是NodeList,而不是单个DOM节点,如复数属性名称​​ addedNodes 所示。

只需使用mutation.addedNodes[0]或循环mutation.addedNodes

for(var i=0; i<mutation.addedNodes; ++i) {
    linkifyContainer(mutation.addedNodes[i]);
}