Вот ваш код с исправленным отступом:
window.onload = function(){
chrome.webRequest.onBeforeRequest.addListener(function(details) {
var allowed = ["*://*.google.com/*", "*://*.nbclearn.com/*"];
chrome.tabs.getSelected(null, function(tab) {
var tabUrl = tab.url;
if ($.inArray(tabUrl, allowed) == -1) {
return {cancel: true}
} else {
return {cancel: false}
}
}, {urls: ["*://*/*"]}, ["blocking"]); // all these are chrome.tabs.getSelected arguments
}); //chrome.webRequest addListener arguments are missing
};
Как видите, вы передаете {urls: ["*://*/*"]}, ["blocking"]
в качестве аргументов chrome.tabs.getSelected
вместо chrome.webRequest
слушателя.Следуя примеру документации , вы можете сделать:
window.onload = function(){
chrome.webRequest.onBeforeRequest.addListener(function(details) {
return {cancel: (details.url.indexOf("google.com/") == -1 && details.url.indexOf("nbclearn.com/") == -1)} },
{urls: ["<all_urls>"]},
["blocking"]);
};
Чтобы заблокировать все запросы, кроме тех, которые поступили от этих двух доменов.
Вы можете использовать Array.prototype.every
чтобы иметь доменные имена в массиве.Например:
window.onload = function(){
var allowed = ["chrome.com/", "nbclearn.com/", "example.com/"];
chrome.webRequest.onBeforeRequest.addListener(function(details) {
var isForbidden = allowed.every(function(url) {
return details.url.indexOf(url) == -1;
});
return {cancel: isForbidden}
}, {urls: ["<all_urls>"]}, ["blocking"]);
};