【发布时间】:2013-05-13 06:07:51
【问题描述】:
所以我一直在为使用 MutationObserver 而烦恼,但我没有取得任何进展。我已经在 W3C 网站和 MDN 上阅读过它。在 MDN 中阅读它时,在示例之前一切都很有意义。
// select the target node
var target = document.querySelector('#some-id');
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
});
});
// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true };
// pass in the target node, as well as the observer options
observer.observe(target, config);
// later, you can stop observing
observer.disconnect();
我最麻烦的部分是创建观察者实例,不确定属于那里的语法。同样在控制台中,我收到了“TypeError:Value 未实现接口节点”。 无论我查看并尝试使用哪些示例;将示例中的选择器替换为所需的 jQuery 选择器(非 jQ 选择器也会返回相同的问题)。
【问题讨论】:
-
MutationObserver与 jQuery不 相关。查询选择器可能看起来类似于 sizzle,但它们不共享一个实现。 -
你有id为“some-id”的元素吗?
-
@Frits van Campen 我知道它们不相关,我正在使用 jQ 库,但是无论我是否使用 jQ 选择器,我都会收到 TypeError 消息。
-
@bfavaretto 我说我已经用必要的选择器替换了选择器并且仍然收到消息。
-
该错误表明您没有将有效的 DOM 节点传递给
observer.observe。如果您解决了这个问题(例如,仅在加载 DOM 时运行该代码),代码就可以工作(您也必须删除disconnect部分,因为它会删除观察者)。演示:jsfiddle.net/SdFeR
标签: javascript syntax mutation-observers