gpt4 book ai didi

javascript - 观察 DOM 的新元素 (VanillaJS)

转载 作者:行者123 更新时间:2023-11-30 08:33:34 25 4
gpt4 key购买 nike

我正在开发一个 Chrome 扩展程序,它可以解析 DOM 并根据特定条件转换一些文本节点。我使用的是纯 Javascript,即没有 jQuery 或其他框架,我想保持这种状态。

我如何查看 DOM 中是否有新的动态插入元素,以便我也可以在它们上运行我的解析器?

再次重申,请不要推荐任何 jQuery 解决方案,或使用纯 Javascript 以外的任何解决方案。

最佳答案

接受的答案实际上不起作用,原因有几个(如下所述)。

相反,我建议这样做:

var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
mutation.addedNodes.forEach(function(addedNode) {
// Do things to `addedNode` here
});
});
});

observer.observe(document.body, {childList: true, subtree: true});

...因为,正如 miniml 正确指出的那样,subtree: true需要接收添加的非直接子元素的事件,并且传递给监听器回调的参数是 MutationRecord数组

此外,我选择了 document.body作为我的观察根,因为我不认为监听动态插入到 <head> 中的元素是大多数人感兴趣的东西。(但如果需要,则只需将 document.body 替换为 document.documentElement 或仅替换 document。)

有趣的旁注:在已接受的答案中,如果有人真的删除了 <html>,那么听众唯一真正触发的情况就是元素和/或之后重新创建它。就是这样。 (因为文档对象是 only allowed to have one Element child 。)

关于javascript - 观察 DOM 的新元素 (VanillaJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com