我希望每当另一个脚本向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
,并且仍未调用回调函数。
答案 0 :(得分:5)
问题在于您将目标设置为document
,而不是container
。要确保这是跨浏览器兼容的,请使用document.documentElement
和document.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);