Пользователь wOxxOm ответил на мой вопрос в комментариях, и я надеялся, что он напишет ответ в конце, чтобы я мог пометить этот вопрос как ответивший, но он этого не сделал, поэтому мне пришлось скопировать его ответ:
Если встроенного URL-фильтра недостаточно, у прослушивателя webNavigation
есть параметр объекта для функции обратного вызова, которая содержит URL-адрес страницы, вы можете настроить фильтры на него следующим образом:
chrome.webNavigation.onHistoryStateUpdated.addListener(function(obj){
if (obj["url"].search(/twitch.tv[\/](?!(directory|downloads|friends|inventory|jobs|p|payments|settings|subscriptions|turbo))/) > 0){
chrome.tabs.executeScript({
file: 'js/twitchContentScript2.js'
});
}
},{url: [{hostSuffix: "twitch.tv", urlMatches: "((.+://)?(www\.)?twitch.tv/.+$)"}]});
Вот комментарии к документации, если кто-то сочтет это ненужным, сообщите мне об этом, отредактировав их:
Нет способа использовать исключения в фильтрах. Как сказано в документации, API использует синтаксис RE2, который не имеет негативных перспектив из соображений производительности. - wOxxOm 12 января в 17: 07
Я думал использовать location.href.search(/[\/](?!(downloads))/)
из фонового скрипта, но у меня нет доступа к location.href
, поэтому я подумал, что, возможно, я смогу использовать chrome.runtime.sendMessage
из contentScript
в фоновый скрипт, но он не работает. Так что я не знаю, какие у меня есть варианты, знаете ли вы? Спасибо - Шаян 12 января в 18:45
См. Документацию: слушатель получает параметр details с URL внутри. - wOxxOm 12 января в 18: 54
Вы имеете в виду chrome.tabs.onUpdated
? Но я использую скрипты контента, объявленные в манифесте, и использую webNavigation
для их повторного внедрения, использование onUpdated
ломает весь смысл. Или ты имеешь в виду что-то еще? - Шаян 12 января в 19:00
Почему обновлено? Я имею в виду слушателя в вашем коде, конечно. - 10 января в 19: 02