19

从 Chrome 访问 Google Mail 或 Google Calendar 时,地址栏中会出现小图标,允许为 URI 方案安装自定义服务处理程序(图中用红色方块标记)。

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

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

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

4

1 回答 1

26

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

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

特别是对于 Chrome 有一个限制,不允许使用不以前缀开头的自定义方案(web+标准方案除外:mailtommsnntp和)。因此,如果您想像 GMail 一样将您的 Web 应用程序注册为服务处理程序,您应该编写如下内容:rtspwebcal

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

或者

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

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

<a href="web+myscheme:some+data">Open in "My Cool App"</a>

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

以下是一些有用的链接:

于 2013-04-21T14:04:24.200 回答