Google chrome 从网站启动Chrome打包的Web应用程序

Google chrome 从网站启动Chrome打包的Web应用程序,google-chrome,web-applications,protocols,handler,google-chrome-app,Google Chrome,Web Applications,Protocols,Handler,Google Chrome App,我有一个Chrome打包的Web应用程序(这是访问串行端口所必需的),当我点击网站上的链接/按钮时,我希望能够从我的网站启动它(带有一些数据) 如果它能检测到用户是否没有运行chrome或者没有安装web应用程序,并能将他们引导到正确的位置,那就更好了 有什么例子吗?这似乎是一件显而易见的事情,但我真的很难找到任何东西…为了推出一款你可以使用的应用,最近推出了一项新功能(应该是Chrome 31)。您可以在URL中传递数据 您可以使用chrome web store的功能检查应用程序是否已安装,

我有一个Chrome打包的Web应用程序(这是访问串行端口所必需的),当我点击网站上的链接/按钮时,我希望能够从我的网站启动它(带有一些数据)

如果它能检测到用户是否没有运行chrome或者没有安装web应用程序,并能将他们引导到正确的位置,那就更好了


有什么例子吗?这似乎是一件显而易见的事情,但我真的很难找到任何东西…

为了推出一款你可以使用的应用,最近推出了一项新功能(应该是Chrome 31)。您可以在URL中传递数据


您可以使用chrome web store的功能检查应用程序是否已安装,如果未安装,则启动安装。

找到了更好的解决方案

在@Vincent Scheib解决方案中,您必须将用户重定向到/some/url,或者打开一个新窗口(实际上可以作为弹出窗口阻止)。所有这些从用户体验的角度来看都不太好

我的解决方案是创建应用程序并配置可外部连接的
。您必须通过将尝试打开应用程序的网站的url域。例如:

“外部可连接”:{
“匹配项”:[“*://developer.chrome.com/*”]
} 
然后,在后台脚本中的打包应用程序中,您可以执行以下操作:

chrome.runtime.onMessageExternal.addListener(函数(消息){
if(message.launch){//此参数将在下面的sendMessage方法中传递
chrome.app.window.create(“main.html”);
}
});
最后,要触发应用程序打开,您必须使用打包的应用程序id发送消息。例如:

chrome.runtime.sendMessage(“mdoedhlejmepngilmgoenbhmipoclckb,{launch:true});

这目前仅在“开发”频道中可用,不稳定。现在似乎稳定。非常简单的实现。不幸的是,如果网页处于匿名模式,url_处理程序不起作用。还有其他想法吗?更多方法请参见。有一个想法,如何从网页启动应用程序没有指向“外部可连接”?我想从任何网页启动我的后台应用程序(例如从本地网络192.168.1.1启动)。@AlexeyBleikher我认为Vincent Scheib answer可以做到这一点