Ошибка расширения Chrome Не проверено runtime.lastError: Не удалось установить соединение. Получающий конец не существует - PullRequest
1 голос
/ 03 ноября 2019

У меня есть прослушиватель смены вкладок в фоновом скрипте, который отправит сообщение в скрипт контента, чтобы выполнить набор действий в скрипте контента.

Мой код в фоновом скрипте -

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: Не удалось установить соединение. Конец получения не существует

Мне нужно обнаружение изменения вкладки в фоновом скрипте, который отправит сообщение в скрипт контента, не вызывая вышеуказанную ошибку. Есть ли способ определить, загружен ли скрипт содержимого из фонового скрипта?

...