Javascript 在从<;发出AJAX请求后执行Chrome内容脚本;车身>;标签

Javascript 在从<;发出AJAX请求后执行Chrome内容脚本;车身>;标签,javascript,jquery,ajax,html,google-chrome-extension,Javascript,Jquery,Ajax,Html,Google Chrome Extension,我在加载DOM之前运行内容脚本时遇到困难。标记中有一个AJAX请求,它在$(document).ready()上触发,当请求完成时,我运行扩展代码 我通过background.js上的WebRequestAPI观察到该请求,如下所示: chrome.webRequest.onCompleted.addListener( function(details) { if(details.url.indexOf("ajax.php") != -1) {

我在加载DOM之前运行内容脚本时遇到困难。标记中有一个AJAX请求,它在$(document).ready()上触发,当请求完成时,我运行扩展代码

我通过background.js上的WebRequestAPI观察到该请求,如下所示:

chrome.webRequest.onCompleted.addListener(
    function(details) {
        if(details.url.indexOf("ajax.php") != -1) {
                // sending message to tab where the AJAX request fired from
                chrome.tabs.sendMessage(details.tabId, message);
        }
    },
    {urls: ["*://derp.com/*""]}
);
然后我在等待内容脚本上接收消息

chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
    if(msg.action == "onInventoryLoaded") {
        epicStuff();
    }
});
但大部分时间内容脚本上都没有收到消息,因为它还没有运行,即使我已经指示Chrome在document_start上运行内容脚本

{
    "matches": [
        "http://derp.com/*"
    ],
    "js": [
        "src/inject/inject.js"
    ],
    "run-at": "document_start"
}
真正困扰我的是Tampermonkey扩展如何能够比Chrome扩展更早地运行用户脚本(通过记录时间戳发现了这一点)


我还将扩展发送给其他人尝试,内容脚本在AJAX请求之前运行。所以我不知道发生了什么。

正如@kalman所指出的,我在manifest.json文件中有错误的属性,它应该在上运行,而不是在上运行。糟糕的是Chrome没有指出错误/无效的属性名称。

如果你在清单中确实是“运行”,那么应该是“运行”。@kalman wow。。我现在觉得自己很蠢,你说得对。请随意张贴答案,我会接受的。