Google chrome extension 站点不运行时的事件处理程序';t匹配manifest.json';匹配项';

Google chrome extension 站点不运行时的事件处理程序';t匹配manifest.json';匹配项';,google-chrome-extension,Google Chrome Extension,My manifest.json包含以下块: "content_scripts": [ { "all_frames": true, "matches": [ "*://www.google.com/*", "*://www.cnn.com/*", "*://*.foxnews.com/*" ], "js": ["js/main.js"]

My manifest.json包含以下块:

"content_scripts": [
    {
        "all_frames": true,
        "matches": [
            "*://www.google.com/*",
            "*://www.cnn.com/*",
            "*://*.foxnews.com/*"
        ],
        "js": ["js/main.js"]
        }
    ],
每当用户访问与我的
匹配设置中的某个站点不匹配的网站时,我需要触发一个事件(在我的content js或background.js中,无所谓)


它是如何完成的?

在您的
background.js
中,您可以添加一个用于加载选项卡的侦听器。在这种情况下,您可以获取当前选项卡的URL并与列表匹配

chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
    if (info.status == "complete") {
        var url = tab.url.replace(/.*?:\/\//g, "").replace(/\/$/, ""); //removes the protocol

        var allowedURLS = ["www.google.com", "www.cnn.com", "foxnews.com"];

        for(var i in allowedURLs) {
            if(allowedURLs[i].indexOf(url) == -1) {
                //URL does not match

                break;
            }
        }
    }
});
您需要在内容脚本中使用exclude_匹配,这意味着它下面的脚本将不会注入

来自谷歌:

排除此内容脚本将被注入的页面。有关这些字符串语法的更多详细信息,请参见匹配模式,有关如何排除URL的信息,请参见匹配模式和全局

对于您的情况:

"content_scripts": [
{
   "all_frames": true,
    "matches": ["<all_urls>"],
    "js": ["js/main.js"],
    "exclude_matches": [
         "*://www.google.com/*",
        "*://www.cnn.com/*",
        "*://*.foxnews.com/*",

    ]

  }
]
“内容脚本”:[
{
“所有框架”:正确,
“匹配项”:[“”],
“js”:[“js/main.js”],
“排除匹配项”:[
“*://www.google.com/*”,
“*://www.cnn.com/*”,
“*://*.foxnews.com/*”,
]
}
]