--- title: Navigator.registerProtocolHandler() slug: Web/API/Navigator/registerProtocolHandler tags: - API - Navigator - URL protocols - URL schemes - registerProtocolHandler - 自定义 URL 协议 - 自定义 URL 方案 translation_of: Web/API/Navigator/registerProtocolHandler ---
{{domxref("Navigator")}} 的方法 registerProtocolHandler()
让 web 站点为自身注册用于打开或处理特定 URL 方案(又名协议)的能力。
举个例子,此API允许Web邮件站点打开 mailto:
URL,或让 VoIP 站点打开 tel:
URL。
navigator.registerProtocolHandler(scheme, url, title);
Note: 最近更新为 navigator.registerProtocolHandler(scheme, url)
, 但目前没有浏览器支持该版本。
scheme
"sms"
来注册处理SMS文本信息链接。url
http
或者 https
协议标记作为开头,最好是 https
,以满足一些浏览器出于安全考虑的要求。title {{Obsolete_Inline}}
Note: 出于欺骗的考虑,标题已从规范中删除,但当前所有的浏览器仍要求使用该标题。 建议始终设置标题,因为支持更新规范的浏览器很可能会向后兼容,并且仍接受标题(但不使用它)。
https:
, about:
等)。SecurityError
SyntaxError
%s
占位符.出于安全考虑,registerProtocolHandler()
严格限制了允许注册的协议标记。以 web+
作为前缀的方式可以注册一个自定义的标记协议,至少要有5个字符的长度(包括 web+
前缀),而且只能使用小写的ASCII字母作为名称。例如 web+burger
,如下面的{{anch("示例")}}所示。
除此之外,还可以使用下文所列的白名单中的协议标记:
bitcoin
geo
im
irc
ircs
magnet
mailto
mms
news
nntp
openpgp4fpr
sip
sms
smsto
ssh
tel
urn
webcal
wtai
xmpp
如果您的网站是 https://www.google.com/
,则可以为其注册一个协议处理程序来处理 web+burger:
链接,如下所示:
navigator.registerProtocolHandler("web+burger", "https://www.google.com/?uri=%s", "Burger handler");
这将创建一个处理程序,该处理程序允许使用 web+burger:
链接将用户发送到您的网站,并将访问的 Burger URL插入%s
占位符。
该脚本必须从与处理程序URL相同的源运行(因此, https://www.google.com/
上的任何页面),并且处理程序URL必须为 http
或 https
。
将通知用户您的代码要求注册协议处理程序,以便他们可以决定是否允许它。有关 https://www.google.com/
上的示例,请参见以下屏幕截图:
"Register a webmail service as mailto handler" 展示了如何从跨平台组件对象模块(XPCOM)中做到这一切.
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', 'webappapis.html#dom-navigator-registerprotocolhandler', 'registerProtocolHandler()')}} | {{Spec2('HTML WHATWG')}} | Initial definition |
{{Compat("api.Navigator.registerProtocolHandler")}}
registerProtocolHandler
from XPCOM scope.