Aquí hay una serie de preguntas similares, pero ninguna de ellas parece aplicarse al envío de mensajes desde una página web normal directamente a una extensión.
Los documentos de Chrome indican que esto es posible sin usar scripts de contenido.
He permitido llamadas externas en manifest.json:
"externally_connectable": { "matches": [ "http://localhost/*", "http://host.local/*" ] Pero realizar una llamada de la siguiente manera produce un Uncaught Error: Attempting to use a disconnected port object :
port = chrome.runtime.connect(editorExtensionId); port.postMessage(editorExtensionId, { connect: true }, function (response) { console.log(response.message); }); Por otro lado, enviar mensajes directamente funciona a través chrome.runtime.sendMessage(editorExtensionId, ...) , pero en este caso solo puedo responder una vez, ya que no hay puerto con una vida útil más larga.
Dentro de la extensión, en background.js, estoy usando chrome.runtime.onMessageExternal.addListener . Curiosamente, normalmente recibo otro mensaje de error después del primero: Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
La página está alojada en http://host.local en ambos casos.