Javascript 试图在Chrome本机消息中使用断开连接的端口
我正在尝试为Chrome本机消息创建Hello World应用程序。我创建了一个Chrome扩展,一个二进制可执行文件和html页面。我使用的是Linux和Chromium 我想我已经把所有的东西都注册好了,但是它仍然不起作用 在我的网页上,我向我的分机发送了一条消息,下面是我分机的部分代码:Javascript 试图在Chrome本机消息中使用断开连接的端口,javascript,linux,google-chrome,google-chrome-extension,Javascript,Linux,Google Chrome,Google Chrome Extension,我正在尝试为Chrome本机消息创建Hello World应用程序。我创建了一个Chrome扩展,一个二进制可执行文件和html页面。我使用的是Linux和Chromium 我想我已经把所有的东西都注册好了,但是它仍然不起作用 在我的网页上,我向我的分机发送了一条消息,下面是我分机的部分代码: chrome.runtime.onMessage.addListener(function (msg, snd, sndResp) { var prt = chrome.runtime.con
chrome.runtime.onMessage.addListener(function (msg, snd, sndResp) {
var prt = chrome.runtime.connectNative('com.example.my_app');
prt.postMessage(msg); // Error in event handler for runtime.onMessage: Error: Attempting to use a disconnected port
请注意,“msg”不是空的,它的内容与我在html页面上输入的内容相同。所以这没什么问题
但是,在扩展中,错误是:
Error in event handler for runtime.onMessage: Error: Attempting to use a disconnected port
连接关闭时可能会导致此错误。它可能会失败,因为选项卡不再处于活动状态,无法接收消息 试着分别使用或。它允许您区分不同类型的连接 当建立连接时,每一端都有一个对象,用于通过该连接发送和接收消息 以下是如何从内容脚本打开频道,以及如何发送和侦听消息:
var port = chrome.runtime.connect({name: "knockknock"});
port.postMessage({joke: "Knock knock"});
port.onMessage.addListener(function(msg) {
if (msg.question == "Who's there?")
port.postMessage({answer: "Madame"});
else if (msg.question == "Madame who?")
port.postMessage({answer: "Madame... Bovary"});
});
您是否在
~/.config/chromium/NativeMessagingHosts/
中包含主机清单文件?@guest271314,是的。它可以有任何文件名或com.example.my_app.json吗?您应该可以使用任何文件名。另请参阅“可用于在不创建端口的情况下向本机应用程序发送消息”,您是否阅读了?@guest271314,是的。为什么是“连接”而不是“连接本机”?另外,这个chrome.runtime.connectNative('com.example.my_app')
和这个chrome.runtime.connectNative('fdsfds')代码>的行为方式相同--没有错误,port.name为空。为什么?我认为Chromium根本找不到本机应用程序。