Обмен сообщениями Chrome: «принимающая сторона не существует» и «порт закрыт до получения ответа» - PullRequest
0 голосов
/ 29 мая 2019

Кажется, все работает нормально, но эти ошибки продолжают появляться:

1) "Unchecked runtime.lastError: Не удалось установить соединение. Не получен конец."

2) "Unchecked runtime.lastError: Порт сообщения закрыт до получения ответа."

Это начало происходить, когда я начал отправлять свои скрипты контента из фонового скрипта. Вот что я добавил в background.js:

  chrome.windows.getAll({populate:true},
    function(windows)
    {
      windows.forEach(function(window)
      {
        window.tabs.forEach(function(tab)
        {
          chrome.tabs.sendMessage(tab.id, {msg: "FINITO!"}, function(){
            console.log("?");
          });
        });
      });
    });

contentscript.js:

chrome.runtime.onMessage.addListener(
  function(response, sender, sendResponse)
  {
    alert("i gotchu");

    //copypasted this from stackoverflow as a fix, I don't really know what this is for and it doesn't seem to work loll
    return Promise.resolve("Dummy response to keep the console quiet");
  });

manifest.json:

{
  "manifest_version": 2,
  "name": "Drill Sergeant",
  "description": "Tracks time spent on 'watchlist' websites",
  "version": "1.0.0",
  "browser_action": {"default_popup": "popup.html"},
  "background": {"scripts": ["background.js"]},
  "content_scripts": [{"matches": ["<all_urls>"], "js": ["contentscript.js"]}],
  "permissions": ["activeTab", "webNavigation", "notifications", "tabs", "background"]
}

Что означают ошибки 1) и 2)? Как бы вы их исправить? Я получаю предупреждение "я получил" каждый раз, когда код выполняется, поэтому кажется, что обмен сообщениями работает, но я понятия не имею, почему эти ошибки всегда появляются с предупреждениями ...

РЕДАКТИРОВАТЬ: я провел дополнительное тестирование, и оповещения показывались только на активной вкладке, поэтому я думаю, что обмен сообщениями на самом деле не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...