注册自定义协议处理程序

Chrome 13 最终包含了 navigator.registerProtocolHandler。这个 API 允许 Web 应用程序将自己注册为特定协议的可能处理程序。例如,用户可以选择您的应用程序来处理 "mailto" 链接。

注册类似这样的协议方案

navigator.registerProtocolHandler(
    'web+mystuff', 'http://example.com/rph?q=%s', 'My App');

第一个参数是协议。第二个参数是应该处理此方案的应用程序的 URL 模式。该模式应包含 '%s' 作为数据的占位符,并且必须与尝试注册协议的应用具有相同的来源。一旦用户批准访问,您就可以通过您的应用、其他站点等使用此链接。

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

点击该链接会向 http://example.com/rph?q=web%2Bmystuff%3A:some%20data 发出 GET 请求。因此,您必须解析 q 参数并手动从协议中剥离数据。

值得注意的是,自 FF3 以来,Firefox 已经实现了 navigator.registerProtocolHandler。Chrome 实现中的一个区别是关于自定义协议。这些协议需要以 "web+" 为前缀,如上面的示例所示。以下协议不需要 "web+" 前缀:"mailto"、"mms"、"nntp"、"rtsp"、"webcal"。

有关此 API 的更多信息,请访问 MDN 文章