gpt4 book ai didi

javascript - 在从 标记触发的 AJAX 请求后执行 Chrome 内容脚本

转载 作者:行者123 更新时间:2023-11-28 07:57:40 25 4
gpt4 key购买 nike

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

我正在通过 background.js 上的 webRequest API 观察该请求,如下所示:

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 文件中有错误的属性,它应该是run_at 而不是run-at。糟糕的是 Chrome 没有指出错误/无效的属性名称。

关于javascript - 在从 <body> 标记触发的 AJAX 请求后执行 Chrome 内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com