如何在 Chrome 扩展中为 <all_urls> 创建异常?

How to create an exception for <all_urls> in Chrome extension?

我已阅读 但它接受的解决方案仅适用于清单文件中的内容脚本。

background.js

我有以下工作代码:

chrome.webRequest.onBeforeSendHeaders.addListener(handler, {urls: ["<all_urls>"] },  ["blocking", "requestHeaders"]);

出现问题是因为我需要它 应用于除一个 ( *://*.facebook.com/* ) 之外的所有网址。

如何创建此异常?

如果唯一的解决方案是正则表达式,您能否指导我如何正确编写它?

webRequest 事件调用 addListener 时可以提供的过滤器,即 RequestFilter type, use match patterns (where the docs say this)。匹配模式无法执行您想要的操作:排除特定 URL,同时允许所有其他 URL。

您必须在传递给听众的 webRequest handler by checking the url property of the details Object 中执行排除。这样做可以是这样的:

function listenForWebrequest(details){
    if(/^[^:]*:(?:\/\/)?(?:[^\/]*\.)?facebook.com\/.*$/.test(details.url)) {
        //The URL matched our exclusion criteria
        return;
    } //else
    //Do your normal event processing here
}

chrome.webRequest.onBeforeSendHeaders.addListener(listenForWebrequest, {
    urls: ["<all_urls>"] 
},  ["blocking", "requestHeaders"]);