所以我首先编辑了我的扩展程序的清单并添加了:
"permissions": [
"nativeMessaging"
],
我可以在扩展程序概述中看到授予权限。
当我在Windows上操作时,我添加了一个Registry-Key: HKEY_LOCAL_MACHINE \ SOFTWARE \谷歌\镀铬\ NativeMessagingHosts \ myextension 有: C:\路径\到\ myextension.json
" myextension.json"包含:
{
"name": "myextension",
"description": "my extension",
"path": "myextension.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://[key]/"
]
}
myextension.bat包含:
@echo off
cd %windir%\system32
start calc.exe
(测试只是想启动计算器)
在我的扩展程序的js中,我试着通过这个来调用它:
var port = null;
var hostName = "myextension";
[...]
$(this).children(".abc").click(function() {
//alert("test");
port = chrome.runtime.connectNative(hostName);
alert(port);
message = {"text": "nachricht"};
port.postMessage(message);
});
但没有任何反应。第一个提示"测试"将被执行。但除此之外没有任何事情发生。
我真的不知道如何调试它,因为我没有通过执行它获得任何反馈。希望你能帮帮我。
/编辑 刚看到我得到: "未捕获TypeError:undefined不是函数(匿名函数)" 于:
port = chrome.extension.connectNative(hostName);
或
port = chrome.runtime.connectNative(hostName);
/编辑2
好的,现在我在浏览器中使用按钮时可以使用它:chrome.browserAction.onClicked.addListener(function() {
chrome.extension.connectNative('fbehost');
});
但是,当我想通过网站上的按钮调用它时,它不起作用:
$(this).children(".abc").click(function() {
alert("Test");
port = chrome.extension.connectNative("fbehost");
});
警报有效,但没有其他事情发生。