Фоновый скрипт уже загружается при каждом запросе страницы.Если вы хотите обновить данные между фоновым скриптом и скриптом контента в фоновом процессе, вам нужно создать двух слушателей, второй будет полезен, когда открыто несколько вкладок.Помните, что данные в вашем всплывающем окне можно получить, просто вызвав chrome.extension.getBackgroundPage()
background.js
chrome.tabs.onUpdated.addListener(() => {
chrome.tabs.sendMessage(info.tabId, {
message: 'DO_SOMETHING_MESSAGE'
});
})
chrome.tabs.onActivated.addListener(() => {
chrome.tabs.sendMessage(info.tabId, {
message: 'DO_SOMETHING_MESSAGE'
});
})
content.js должен работать примерно так:
const processContent = () => {
// do whatever here.
let data = {message: UPDATE_BACKGROUND_DATA}
chrome.runtime.sendMessage(data);
}
// run when messages sent from background.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.message === 'DO_SOMETHING_MESSAGE') {
processContent();
}
});
// run onload
processContent();
И, наконец, вернитесь в фоновый скрипт и создайте прослушиватель, который прослушивает любые обновленные данные.
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
if (msg.message === UPDATE_BACKGROUND_DATA) {
// update background vars
}
})