Базовое программирование расширений Chrome: невозможно динамически блокировать сайты

Я пытаюсь написать простое расширение Chrome, которое блокирует твиттер, когда я нажимаю на него.

Вот мой background.js:

var enabled = true;
const global_blocked_urls = ["https://*.chess.com/*"];



chrome.webRequest.onBeforeRequest.addListener(
    (details) => {
        console.log(global_blocked_urls); //prints as expected 
        console.log("blocking:", details.url);
        return {
            cancel: enabled
        };
    }, {
        "urls": global_blocked_urls
    }, ["blocking"]
);

chrome.runtime.onMessage.addListener(block_twitter);

function block_twitter(msg) {


        var twitter_regex = "https://*.twitter.com/*";
        global_blocked_urls.push(twitter_regex);
        console.log(global_blocked_urls);

    console.log(msg);
}

У меня есть список ссылок, которые я не хочу посещать, в глобальном списке.

Проблема: скажи block_twitter Сначала включается прослушивание, а затем я захожу на новую веб-страницу, поэтому onBeforeRequest слушатель срабатывает следующим. Когда я распечатаю глобальный список внутри обратного вызова chrome.webRequest.onBeforeRequest.addListener, он распечатывает то, что я ожидаю, чтобы распечатать.

Но: он по-прежнему позволяет мне посещать твиттер, несмотря на то, что регулярный URL-адрес твиттера в глобальном списке.

Как мне отладить / исправить это?

0 ответов

Другие вопросы по тегам