Вам нужно настроить функциональность на фоновой странице, чтобы она работала на всех вкладках.
// add listener for all tabs
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
var safesite = false;
if (changeInfo === "loading") {
// logic for checking white list, using tab.url
if (!safesite) {
chrome.tabs.update(tabId, { url: 'www.google.com' });
}
}
});
По сути, вы добавляете прослушиватель событий на все вкладки. При его загрузке вы проверяете, есть ли его в белом списке. Если это черный список сайтов, перенаправьте их на любой URL, который вам нравится. Вы также можете включить .html-файл в каталог расширений, чтобы перенаправить их также. Это срабатывает на всех вкладках, включая веб-инспектор, так что вы можете использовать некоторую логику для проверки только запросов http (s).
Кроме того, этот подход МОЖЕТ кратко показывать страницу, занесенную в черный список, и ТОП перенаправить вас на страницу заблокированную_url.html. Экспериментальный API, webRequest , должен обеспечивать возможность фильтрации запроса ДО загрузки страницы, но вы не сможете загрузить его в Chrome Web Store, пока он не станет частью официального API Chrome. Если это для личного использования, то не стесняйтесь использовать его.
Последний совет для разработки: вы можете отлаживать только background.html через страницу настроек расширений (chrome: // settings / extensionSettings). Откройте развертку для своего расширения, и вы увидите «Проверка активных представлений:», где вы можете щелкнуть ссылку на любые страницы, относящиеся к расширению, которые у вас в данный момент запущены. При этом откроется веб-инспектор для этой страницы.
После долгих царапин на голове я случайно наткнулся на это, и с тех пор это спасает жизнь.