gpt4 book ai didi

javascript - Chrome 扩展 WebRequest 按 tabId 过滤不起作用?

转载 作者:行者123 更新时间:2023-11-29 19:37:52 25 4
gpt4 key购买 nike

我正在重构一个现有的 chrome 扩展,我调用了 chrome.webRequest.onBeforeSendHeaders,它应该根据当前选择的选项卡进行过滤。

我正在使用文档 here并且,关于过滤,它指出:

The webRequest.RequestFilter filter allows limiting the requests for which events are triggered in various dimensions:

URLs URL patterns such as *://www.google.com/foo*bar. Types Request types such as main_frame (a document that is loaded for a top-level frame), sub_frame (a document that is loaded for an embedded frame), and image (an image on a web site). See webRequest.RequestFilter. Tab ID The identifier for one tab. Window ID The identifier for a window.

据我所知,如果我将 tabid 定义为监听器的一部分,我应该根据选项卡 ID 过滤所有请求(因此,只捕获来自该特定选项卡的请求 header )。

问题是这不会发生。当我采用 tabid:xx 过滤器时,我不断捕获来 self 打开的各种选项卡的所有请求。

我错过了什么?

这是我的后台脚本 background.html 示例代码:

var currentTabId = -1;

chrome.tabs.getSelected(null, function(tab){
currentTabId = tab.id;
console.log("tab id in getselected "+currentTabId);

});

chrome.webRequest.onBeforeSendHeaders.addListener(
function(req){

console.log("-> Request Headers received for "+req.url);

console.log('onBeforeSendHeaders tab id: '+currentTabId)
console.log('onBeforeSendHeaders: '+JSON.stringify(req))
}

, { urls:["http://*/*", "https://*/*"], tabId: currentTabId }, ['requestHeaders','blocking']);

currentTabId 例如1666 而对象请求中的 tabId 是另一个,它可能来 self 打开和正在使用的任何选项卡(在 1666 上未被过滤掉)。

最佳答案

您的示例代码执行顺序错误; chrome.tabs.getSelected 是异步的。

var currentTabId = -1;
chrome.tabs.getSelected(null, function(tab){
currentTabId = tab.id;
// Here, currentTabId is defined properly
console.log("tab id in getselected "+currentTabId);
});
// Here, it is still -1

您需要将 addListener 调用移动到 getSelected 回调中:

chrome.tabs.getSelected(null, function(tab){ 
currentTabId = tab.id;
console.log("tab id in getselected "+currentTabId);
chrome.webRequest.onBeforeSendHeaders.addListener(/*...*/);
});

关于javascript - Chrome 扩展 WebRequest 按 tabId 过滤不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538439/

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