无法在Chrome扩展程序中使用本机消息传递

时间:2014-04-28 17:50:04

标签: windows google-chrome google-chrome-extension chrome-native-messaging

希望你能帮助我。我需要从Chrome-Extension调用可执行jar。通过研究,我发现https://developer.chrome.com/extensions/messaging#native-messaging是可行的方法。

所以我首先编辑了我的扩展程序的清单并添加了:

"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"); 
});

警报有效,但没有其他事情发生。

0 个答案:

没有答案