相关疑难解决方法(0)

chrome.runtime.connectNative生成Uncaught TypeError:undefined不是函数

我写了一个chrome扩展,调用这个connect()函数连接到本地C++程序:

function connect() {
  console.log("test1");
  //port = chrome.extension.connectNative('com.a.chrome_interface');
  port = chrome.runtime.connectNative('com.a.chrome_interface');

  port.onMessage.addListener(onNativeMessage);
  port.onDisconnect.addListener(onDisconnected);
  console.log("test5");
}
Run Code Online (Sandbox Code Playgroud)

我可以在Console中看到test1,但之后我收到了错误

Uncaught TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

在线

port = chrome.runtime.connectNative('com.a.chrome_interface');
Run Code Online (Sandbox Code Playgroud)

我的扩展清单文件在这里:

{
  "name": "CPP_Connect",
  "version": "1.0",
  "description": "Send data to CPP program",

  "content_scripts": [
   {
     "matches": ["<all_urls>"],
     "js": ["contentscript.js"]
   }
  ],

  "permissions": ["contextMenus", "tabs", "nativeMessaging", "<all_urls>"],

  "manifest_version": 2

}
Run Code Online (Sandbox Code Playgroud)

我的com.a.chrome_interface.json看起来像这样:

{
"name": "com.a.chrome_interface",
"description": "Chrome Native Messaging API Example Host",
"path": "com.a.chrome_interface",
"type": "stdio",
"allowed_origins": [
"chrome-extension://abc.../"
]
}
Run Code Online (Sandbox Code Playgroud)

com.a.chrome_interface是一个linux可执行C++文件,它生成一个文件,如果它被调用,则永远不会创建该文件.我确实放了两个文件

 /etc/opt/chrome/native-messaging-hosts/
Run Code Online (Sandbox Code Playgroud)

所以我想,我确实正确地注册了我的C++,但我也猜测,如果我注册错了,我应该得到一个不同的错误.如果我使用chrome.extension.connect()脚本运行低谷,错误消息消失,但没有数据到达我的C++程序.

我确实阅读并尝试按照 …

google-chrome google-chrome-extension chrome-native-messaging

10
推荐指数
1
解决办法
5738
查看次数

如何在本机应用程序中处理 chrome.runtime.sendNativeMessage()

我正在本地消息传递主机上工作。我可以使用 api 启动我的自定义应用程序

var port = chrome.runtime.connectNative('com.my_company.my_application');
Run Code Online (Sandbox Code Playgroud)

我可以使用 api 将消息发布到我的自定义应用程序

port.postMessage({ text: "Hello, my_application" });
Run Code Online (Sandbox Code Playgroud)

我知道他们使用输入/输出流来发送和接收消息。我的本机应用程序(c 或 c++ exe)应该如何获得有关接收到的消息的通知,我应该处理哪个函数/事件来接收消息。

google-chrome-extension

4
推荐指数
2
解决办法
7961
查看次数