Сообщение от расширения на веб-страницу [Не удалось установить соединение. Принимающая сторона не существует]

#javascript #google-chrome #web #google-chrome-extension #message

#javascript #google-chrome #веб #google-chrome-расширение #Сообщение

Вопрос:

Я пытаюсь открыть веб-страницу из расширения и отправить на нее сообщение. Но я получаю сообщение об ошибке на странице, где я получаю сообщение. Пожалуйста, помогите, вот мой код.

Ошибка: Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

mainfest.json:

 {
    "manifest_version": 2,
    "name": "Test",
    "description": "Test",
    "version": "1.0.0",
    "icons": {"128": "icon_128.png"},
    "browser_action": {
        "default_icon": "icon_128.png",
        "default_popup": "popup.html"
    },
    "externally_connectable": {
        "ids": [
            "abcdefghijklmnoabcdefhijklmnoabc"
        ],
        "matches": [
          "http://localhost:8080/*",
          "http://localhost:8080/",
          "http://localhost:8080/plugin.html"
        ],
        "accepts_tls_channel_id": true
      },
    "permissions": ["tabs", "<all_urls>"]
}
  

popup.js (расширение):

 chrome.tabs.create({ url: "http://localhost:8080/plugin.html" }, function(tab) {
  chrome.runtime.sendMessage(tab.id, "test");
});
  

plugin.html (веб-страница):

 var port = chrome.runtime.connect("abcdefghijklmnoabcdefhijklmnoabc");
port.onMessageExternal.addListener(function(request, sender, sendResponse) {
  alert(request.message);
});
  

Комментарии:

1. Привет и добро пожаловать в StackOverflow. Вы могли бы получить больше видимости, сделав заголовок вашей проблемы немного более явным, например, указав в нем ошибку, которую вы получили. Удачи и счастливого кодирования!

2. Нет API для отправки сообщений на веб-страницы. Существует только API для получения сообщений с веб-страниц, как показано в документации : страница отправляет сообщение, а расширение отвечает. В качестве обходного пути вы можете использовать стандартные сообщения DOM через CustomEvent или postMessage.