Базовое программирование расширений 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-адрес твиттера в глобальном списке.
Как мне отладить / исправить это?