从扩展存储上保存的数组中匹配URL的语法

时间:2015-02-11 21:04:23

标签: javascript google-chrome google-chrome-extension

我一直在浏览Google Chrome API,以便处理扩展程序及其相关流程。我偶然发现了chrome.webRequest https://developer.chrome.com/extensions/webRequest#event-onBeforeRequest我一直在修改语法,但我迷失了它,因为我对编程和使用chrome API相对较新

我在想的是使用chrome.webRequest.onBeforeRequest.addListener(函数回调)然后让它使用chrome.tabs.remove来删除选项卡是否匹配数组但是我不知道该怎么做

我有这个用于使用谷歌浏览器匹配过滤器删除选项卡

var urlArray= ["*://facebook.com/*", "*://example.com/*", "*://google.com/*" ];
chrome.tabs.onCreated.addListener(function (tab) {
    for (var i = 0, len = urlArray.length; i < len; i++) {
        if (tab.url.indexOf(urlArray[i]) > -1) {
            chrome.tabs.remove(tab.id);
            alert("things");
            break;
        }
    }
});

1 个答案:

答案 0 :(得分:0)

代码中的问题是,如果您检查"*somestring*".indexOf()函数实际上会查找该字符串,这意味着星号不能用作通配符,并且只有当字符串包含它们时才会匹配。

以下是一个例子:

"hello".indexOf("*hello")     // -1 there's no *
"123hello".indexOf("*hello")  // -1 there's no *
"*hello".indexOf("*hello")    // 0  here it is, in the first position
"123*hello".indexOf("*hello") // 3  and again, in the fourth position

因此,在您的情况下,您应该使用Regular Expressions,如下所示:

var urlExp= /https?\:\/\/(facebook|google|example)\.com/i;

chrome.tabs.onCreated.addListener(function (tab) {
    if (urlExp.test(tab.url)) {
        chrome.tabs.remove(tab.id);
        alert("things");
    }
});