Chrome扩展Manifest V3中chrome.webRequest.onBeforeRequest无法触发求助
Manifest V3 中 chrome.webRequest.onBeforeRequest 事件无法触发问题
我曾在基于Manifest V2的Chrome扩展中,使用chrome.webRequest.onBeforeRequest获取当前标签页的所有图片请求,代码如下:
const dataSet = {}; chrome.webRequest.onBeforeRequest.addListener(function (details) { if (details && details.url && details.type === "image") { if (!dataSet[tabId]) { dataSet[tabId] = new Set([]); } const currentSet = dataSet[tabId]; currentSet.add(details.url); } }, { urls: ["<all_urls>"] });
将代码迁移到Manifest V3后,该事件完全无法触发。我先后尝试了两种解决方案:
方案一:结合 chrome.webNavigation.onBeforeNavigate 使用
chrome.webNavigation.onBeforeNavigate.addListener(function(){ // 此事件未触发 chrome.webRequest.onBeforeRequest.addListener(function(details){ },{urls: ["<all_urls>"], types: ["main_frame"]}); },{ url: [{hostContains:"domain"}] });
方案二:结合 webNavigation.onHistoryStateUpdated 使用
chrome.webNavigation.onHistoryStateUpdated.addListener((details) => { console.log('wake me up', details); chrome.webRequest.onBeforeRequest.addListener( (details) => { console.log(details); }, { urls: ['<all_urls>'], } ); });
但两种方案均无效,chrome.webRequest.onBeforeRequest始终未触发,背景页控制台无对应输出。
内容的提问来源于stack exchange,提问作者Armen Stepanyan
相关产品推荐
相关产品推荐

