我正在尝试为Chrome Native Messaging创建Hello World应用。我创建了Chrome扩展程序,二进制可执行文件和html页面。我在Linux上使用Chromium。
我认为我已经正确地注册了所有内容,但它仍然无法正常工作。
在我的网页上,我向我的分机发送了一条消息,这是我的延伸代码的一部分:
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
答案 0 :(得分:1)
连接关闭时可能会导致错误。它可能会失败,因为标签不再处于活动状态以接收消息。
分别尝试使用runtime.connect
或tabs.connect
。它允许您区分不同类型的连接。
建立连接时,每个端都有一个runtime.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"});
});