我正在开发一个需要调用本机应用程序的Chrome扩展程序。
根据Google documentation,我们使用的是chrome.runtime.connectNative方法。 但是在我们的扩展中,似乎chrome.runtime对象没有方法'connectNative'。当我们显示chrome.runtime对象的方法列表时,我们得到以下列表(由console.log(“”+ Object.getOwnPropertyNames(chrome.runtime))打印;
getManifest中,使用getURL,重装,requestUpdateCheck,连接的sendMessage,的onConnect,的onMessage,ID
我们在MacOS X 10.8.5上使用Chrome 31.0.1650.63。我们也尝试使用Chrome Canary(版本34.0.1767.0 canary),我们有相同的错误,chrome.runtime的方法列表略有不同: getManifest,getURL,setUninstallUrl,reload,requestUpdateCheck,connect,sendMessage,onConnect,onMessage,id
因此,在这两种情况下(常规Chrome和Chrome Canary),我们都没有'connectNative'方法。
这似乎不是权限问题,我们的扩展清单在权限属性中确实有“nativeMessaging”。当我们点击Chrome扩展程序设置中的权限链接时,我们可以看到扩展程序可以“与合作的本机应用程序进行通信”。
(抱歉,我无法发布截图或完整的清单,StackOverflow不会让我粘贴甚至远程看起来像我发布图像的东西,因为我没有足够的声誉....)
我们错过了什么吗?
答案 0 :(得分:2)
您获得的chrome.runtime
属性列表表明您的代码是作为内容脚本运行的。大多数chrome。* API不适用于内容脚本。它们只能用于您定义的背景或事件页面,弹出窗口或其他扩展视图。因此,您可以使用从内容脚本到背景或事件页面的常规扩展消息,然后可以调用您的本机应用程序。