上述脚本无法正常运行。 我想将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”。
请告诉我这个问题。
答案 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]);
}