У меня есть прослушиватель смены вкладок в фоновом скрипте, который отправит сообщение в скрипт контента, чтобы выполнить набор действий в скрипте контента.
Мой код в фоновом скрипте -
window.chrome.tabs.onActivated.addListener((activeInfo) => {
window.chrome.tabs.sendMessage(activeInfo.tabId, { type: 'getLibraries' }, (data) => {
// do some thing
});
});
- скрипт контента
window.chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
switch (message.type) {
case 'getLibraries':
// do something
break;
default:
console.error('Unrecognised message: ', message);
}
});
В большинстве случаев работает нормально. Когда я добавляю расширение в свой браузер и переключаюсь на ранее открытую вкладку, сценарий содержимого там не будет присутствовать, так как плагин не присутствовал при загрузке вкладки. В это время фоновый скрипт пытается отправить сообщение об изменении вкладки. Поскольку сценарий содержимого отсутствует, Chrome выдаст следующую ошибку
Unchecked runtime.lastError: Не удалось установить соединение. Конец получения не существует
Мне нужно обнаружение изменения вкладки в фоновом скрипте, который отправит сообщение в скрипт контента, не вызывая вышеуказанную ошибку. Есть ли способ определить, загружен ли скрипт содержимого из фонового скрипта?