Как обновить chrome.webRequest.onBeforeRequest после изменения фильтров - PullRequest
0 голосов
/ 30 мая 2019

Я создал небольшое расширение 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 будет доступен из браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...