从网页安装URI方案的服务处理程序

rpe*_*kov 16 javascript gmail uri google-chrome uri-scheme

从Chrome访问Google Mail或Google日历时,地址栏中会显示小图标,允许为URI方案安装自定义服务处理程序(在图片中标有红色方框).

安装自定义服务处理程序的图标

图标的工具提示是:This page wants to install a service handler.当我点击图标并允许Google Mail处理mailto:链接时,所有mailto:链接都在Chrome中打开.

是否有可能创建能够为我的自定义URI方案安装自定义处理程序的网页,就像Google Mail一样?

Vad*_*dim 23

对于Chrome(13 +),Firefox(3.0+)和Opera(11.60+),可以使用JavaScript API将Web应用程序注册为自定义URI方案的服务处理程序:

window.navigator.registerProtocolHandler(protocol, uri, title);
Run Code Online (Sandbox Code Playgroud)
  • protocol 是网站希望处理的协议,指定为字符串.
  • uri是作为字符串的处理程序的URI.您可以包含"%s"以指示在何处插入要处理的文档的转义URI.
  • title 是作为字符串呈现给用户的处理程序的标题.

专为Chrome有一个限制,即不允许使用不带启动定制方案web+前缀(除了那些标准:mailto,mms,nntp,rtspwebcal).因此,如果您想将您的Web应用程序注册为GMail的服务处理程序,您应该写下这样的内容:

navigator.registerProtocolHandler("mailto", "https://www.example.com/?uri=%s", "Example Mail");
Run Code Online (Sandbox Code Playgroud)

要么

navigator.registerProtocolHandler("web+myscheme", "https://www.example.com/?uri=%s", "My Cool App");
Run Code Online (Sandbox Code Playgroud)

注意URI模式,它必须包含%s哪些将被链接用户点击的实际URI替换.例如:

<a href="web+myscheme:some+data">Open in "My Cool App"</a>
Run Code Online (Sandbox Code Playgroud)

会触发GET请求http://www.example.com/?uri=web%2Bmyscheme%3Asome%20data

以下是一些有用的链接: