如何使用MutationObserver观察整个身体?

时间:2017-07-15 11:18:40

标签: javascript jquery

我希望每当另一个脚本向div添加body时调用某个函数。

我试过了:

var dom_observer = new MutationObserver(function(mutation) {
    console.log('function called');
});
var container = document.body;
console.log(container);
var config = { attributes: true, childList: true, characterData: true };
dom_observer.observe(container, config);

我尝试将container设置为document.body(上面的例子)和document.querySelector('body')。在这两种情况下,console.log()都显示null,我收到以下错误:TypeError: Argument 1 of MutationObserver.observe is not an object.。将div添加到body时,未调用回调函数。

我尝试将其设置为document.getElementsByTagName("body")[0]document.documentElement.childNodes[1]。在这两种情况下,console.log()都显示undefined,并且仍未调用回调函数。

1 个答案:

答案 0 :(得分:5)

问题在于您将目标设置为document,而不是container。要确保这是跨浏览器兼容的,请使用document.documentElementdocument.body。以下应该有效:

var dom_observer = new MutationObserver(function(mutation) {
    console.log('function called');
});
var container = document.documentElement || document.body;
console.log(container);
var config = { attributes: true, childList: true, characterData: true };
dom_observer.observe(container, config);

Working JSFiddle