等到jQuery存在元素(在单页面应用程序上)

时间:2017-05-12 22:55:06

标签: javascript jquery google-chrome-extension single-page-application

我正在尝试在页面上运行内容脚本(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,我只想观察具有相关类名的元素。

0 个答案:

没有答案