Javascript 在从<;发出AJAX请求后执行Chrome内容脚本;车身>;标签
我在加载DOM之前运行内容脚本时遇到困难。标记中有一个AJAX请求,它在$(document).ready()上触发,当请求完成时,我运行扩展代码 我通过background.js上的WebRequestAPI观察到该请求,如下所示: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) {
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。。我现在觉得自己很蠢,你说得对。请随意张贴答案,我会接受的。