Google chrome extension 如何在chrome扩展中跟踪DOM更改?

Google chrome extension 如何在chrome扩展中跟踪DOM更改?,google-chrome-extension,Google Chrome Extension,我正在编写一个chrome扩展,其中我想获取页面上存在的所有图像,但一些图像在一段时间后加载(可能是通过ajax),而一旦DOM空闲,我就无法获取这些图像。加载页面后是否有任何方法跟踪DOM更改?您可以与事件一起使用。您的回调必须检查每个节点插入,以查看它是否是您要查找的节点类型。像下面这样的方法应该可以奏效 function nodeInsertedCallback(event) { console.log(event); }; document.addEventListener('D

我正在编写一个chrome扩展,其中我想获取页面上存在的所有图像,但一些图像在一段时间后加载(可能是通过ajax),而一旦DOM空闲,我就无法获取这些图像。加载页面后是否有任何方法跟踪DOM更改?

您可以与事件一起使用。您的回调必须检查每个节点插入,以查看它是否是您要查找的节点类型。像下面这样的方法应该可以奏效

function nodeInsertedCallback(event) {
    console.log(event);
};
document.addEventListener('DOMNodeInserted', nodeInsertedCallback);
2020年更新:

现在推荐的方法是使用API


谢谢亚伯拉罕。成功了。对于那些不知道要把上面的代码:Heads up:这个事件是不推荐的。现代的方法是使用DOM变异观察者,这是标准的答案。这段代码应该添加到background.js?这应该是一个内容脚本。只有内容脚本才能访问DOM。
 let observer = new MutationObserver(mutations => {
    for(let mutation of mutations) {
         for(let addedNode of mutation.addedNodes) {
             if (addedNode.nodeName === "IMG") {
                 console.log("Inserted image", addedNode);
              }
          }
     }
 });
 observer.observe(document, { childList: true, subtree: true });