Javascript 树镜像js和突变摘要是否支持iframe?

Javascript 树镜像js和突变摘要是否支持iframe?,javascript,dom,iframe,mutation-observers,mutation-events,Javascript,Dom,Iframe,Mutation Observers,Mutation Events,我一直在使用一个名为的开源库来进行DOM镜像 一切都很好,只是有点不对劲。当主文档包含iframe时,这些库不会捕获对iframe中包含的文档的dom更改。通过阅读的代码,我可以了解到,它将observer绑定到主文档,但不知道这是否也可以自动处理iframe文档 我不确定图书馆是否不支持这一点,或者我遗漏了什么。是否有人在使用这些库时遇到过此问题?请帮忙 编辑:感谢wOxxOm在前面的回答中指出了错误的结论 简而言之,观察iframe内部的变化似乎不受MutationObserver API的

我一直在使用一个名为的开源库来进行DOM镜像

一切都很好,只是有点不对劲。当主文档包含iframe时,这些库不会捕获对iframe中包含的文档的dom更改。通过阅读的代码,我可以了解到,它将observer绑定到主文档,但不知道这是否也可以自动处理iframe文档


我不确定图书馆是否不支持这一点,或者我遗漏了什么。是否有人在使用这些库时遇到过此问题?请帮忙

编辑:感谢wOxxOm在前面的回答中指出了错误的结论

简而言之,观察iframe内部的变化似乎不受MutationObserver API的支持。考虑下面的例子:

var m = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    console.log(mutation) 
  });
});

// We observe child list and subtree changes
m.observe(document.body, {childList: true, subtree: true});

// Let's create an iframe
var iframe = document.createElement("iframe");

// A mutation record will be logged here
document.body.appendChild(iframe);

// However this will NOT log a mutation record
iframe.contentDocument.body.appendChild(document.createElement("div"));

恐怕你在这里运气不好。正如上面的评论中所说,您必须在每个iframe中初始化一个新的突变观察者,以便能够观察它们的DOM更改。提到的库都不支持这一点,因为它们大多是本机MutationObserver API的包装。

您缺少iframe是一个单独文档的事实,因此要检测内部的突变,您需要在每个iframe中附加一个单独的MutationObserver。谢谢。我明白。我只是想知道这些库是否会自动处理iframe,而不需要我们将突变观察者显式地附加到每个iframe文档中。您的代码不正确:您附加的新元素是由主文档创建的,而不是附加到框架文档中。在两个操作中都使用iframe.contentDocument。下面是一个示例:
iframe.contentDocument.body.appendChild(iframe.contentDocument.createElement('span'))。textContent='test'
好的提示:你是对的。因此,这一观察显然使我上面所说的无效:(