Ajax 加载后重新初始化内容脚本?

Reinitialising content script after Ajax load?

在我的内容脚本中,我将遍历整个 DOM 并对所有 <img> 元素做一些事情。

我在 Background.js 中使用 onUpdated 来检查选项卡何时打开,然后执行脚本。

chrome.tabs.onUpdated.addListener(function(tabId, info, tab) { 
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
            if(info.status == "complete") {
                chrome.tabs.sendMessage(tabs[0].id, function (response) {
                   // send data to content script etc.
                });
            }
        });
}

这适用于非动态加载的内容 - 例如,在 Facebook 新闻提要上,它会对所有最初可见的图像执行我想要的操作 - 但当我向下滚动时,新 stories/photos 等被加载(使用 AJAX?不确定)当然这些 <img> 元素不受我的内容脚本的影响。

我如何重新加载(或者调整会更好,因为我必须搜索整个 DOM,而且它很慢)我的内容脚本,以便它适用于这个新调整的 DOM?我在这里找不到任何制表符方法 - https://developer.chrome.com/extensions/tabs 提到了这个问题。

尝试过:

您需要监控页面以插入新图像,例如使用 MutationObservermutation-summary 库。 tabs 事件不会在页面更改时触发。

有关执行此操作的方法的讨论,请参阅 this question