Chrome扩展程序错误未选中的runtime.lastError:无法建立连接。接收端不存在

时间:2019-11-03 15:33:37

标签: javascript google-chrome-extension browser-extension

我在后台脚本中有一个制表符更改侦听器,它将向内容脚本发送一条消息,以在内容脚本中执行一组操作。

我在后台脚本中的代码是

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会引发以下错误

  

未经检查的runtime.lastError:无法建立连接。接收端不存在

我需要在后台脚本中进行选项卡更改检测,这会将消息发送到内容脚本,而不会导致上述错误。有什么方法可以检测内容脚本是否已从后台脚本加载?

0 个答案:

没有答案