我一直在浏览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;
}
}
});
答案 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");
}
});