我正在尝试在页面上运行内容脚本(chrome扩展名)。我设法工作jQuery,我正在尝试选择元素document.ready()。
但是,由于页面是单页面应用程序,因此所有内容都会动态加载,并且不会捕获该元素。
我相信我可以使用setTimeout方法实现它,但这听起来不对。
等待元素存在的正确方法是什么,当存在时获取元素或运行一些代码?
编辑:为了简化问题,以下是一个示例:
<body>
<div id="parent">
<button class="a b c">...</button>
</div>
</body>
这里,只创建了body标签,没有任何子节点,然后所有子节点动态加载到body节点中,因为它们使用单页面应用程序方法(React具体)。
MutationObserverAPI按照注释中的建议工作,但它会提取所有更改,我无法弄清楚如何遍历每个MutationRecord对象并检测是否存在'.a.b.c'
类。有没有办法只观察并等待'.a.b.c'
分类项存在,当它存在时,获取此元素+触发函数。
这是我用来观察整个突变的片段:
MutationObserver = window.MutationObserver;
var observer = new MutationObserver(function(mutations, observer) {
console.log(mutations);
});
observer.observe(document, {
subtree: true,
attributes: true,
childList: true,
characterData: true,
attributeOldValue: true,
characterDataOldValue: true
});
因此,如果有console.log
,我只想观察具有相关类名的元素。