Я создал небольшое расширение Google Chrome, которое должно блокировать запросы к некоторым веб-сайтам из массива.После того, как я нажал на какую-то кнопку, один элемент из массива веб-сайтов должен быть удален, и он должен быть доступен из браузера, но это не так.
Я попытался создать прослушиватель (chrome.webRequest.onBeforeRequest.addListener()
), который занимаетмассив с сайтами в качестве фильтра.Затем я удалил один элемент из массива и удалил слушателя (chrome.webRequest.onBeforeRequest.removeListener()
).Затем создал нового слушателя с новым набором сайтов.
let listURL = [
"*://*.facebook.com/*",
"*://*.yandex.ru/*"
];
function blockRequest(details) {
return {cancel: true};
}
function updateFilters(urls) {
if(chrome.webRequest.onBeforeRequest.hasListener(blockRequest)) {
chrome.webRequest.onBeforeRequest.removeListener(blockRequest);
}
chrome.webRequest.onBeforeRequest.addListener(blockRequest, {
urls: urls
}, ['blocking']);
chrome.webRequest.handlerBehaviorChanged();
}
updateFilters(listURL);
document.getElementById('delete').addEventListener('click', function(e) {
e.preventDefault();
updateFilters(["*://*.yandex.ru/*"]);
});
Я ожидаю, что после нажатия на кнопку (#delete
) http://facebook.com будет доступен из браузера.