我正在构建一个 chrome 扩展,我想向此电报页面附加一些元素,似乎只成功附加了文本,而不是整个 HTML。
const span = document.createElement("span"); span.innerHTML = '<span class="xxx">Foo,bar</span>'; const p = document.querySelector("p"); p.appendChild(span);
正如评论中所建议的那样,我验证了自己,实际上有一个 MutationObserver 当某些代码试图在文档树中的某个点改变某些内容时,它会实时更改 dom。
MutationObserver
因为没有标准方法来查找在 dom 上监听的实时 MutationObservers 实例(如果有的话),除非您可以努力查找保存该对象的变量在哪个范围内;最快的方法是用它的克隆替换 body 元素,所有 MutationObserver 都会消失。
document.body = document.body.cloneNode(true);
完成此操作后,当您尝试将元素附加到 dom 时,它将按预期进行相应更改,而不会受到干扰。
在寻找如何获取实时 MutationObserver 实例或解决该需求的工作方法是什么时,在 Stack Overflow 答案中找到了最后的线索?
是有没有办法从项目中删除所有的mutationObservers而不引用它?
正如评论中所建议的那样,我验证了自己,实际上有一个
MutationObserver
当某些代码试图在文档树中的某个点改变某些内容时,它会实时更改 dom。因为没有标准方法来查找在 dom 上监听的实时 MutationObservers 实例(如果有的话),除非您可以努力查找保存该对象的变量在哪个范围内;最快的方法是用它的克隆替换 body 元素,所有 MutationObserver 都会消失。
完成此操作后,当您尝试将元素附加到 dom 时,它将按预期进行相应更改,而不会受到干扰。
平心而论...
在寻找如何获取实时 MutationObserver 实例或解决该需求的工作方法是什么时,在 Stack Overflow 答案中找到了最后的线索?
是有没有办法从项目中删除所有的mutationObservers而不引用它?