注册自定义协议处理程序

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

注册如下所示的协议 scheme:

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

第一个参数是协议。第二个是处理此架构的应用的网址模式。格式应包含“%s”作为数据的占位符,并且必须与尝试注册协议的应用位于同一源。用户批准访问权限后,您可以通过您的应用、其他网站等使用此链接:

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

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

值得注意的是,Firefox 从 FF3 开始就实现了 navigator.registerProtocolHandler。Chrome 实现的一个不同之处在于自定义协议。这些标记需要带有“web+”前缀,如上例所示。以下协议不需要使用“web+”前缀:“mailto”、“mms”、“nntp”、“rtsp”、“webcal”。

如需详细了解此 API,请参阅 MDN 文章