尝试在Chrome Native Messaging

时间:2016-06-03 00:45:28

标签: javascript linux google-chrome google-chrome-extension

我正在尝试为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 

1 个答案:

答案 0 :(得分:1)

连接关闭时可能会导致错误。它可能会失败,因为标签不再处于活动状态以接收消息。

分别尝试使用runtime.connecttabs.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"});
});