Navigator: unregisterProtocolHandler() 方法
Navigator 接口的 unregisterProtocolHandler() 方法用于移除给定 URL 协议的协议处理器。
此方法是 registerProtocolHandler() 的逆操作。
语法
js
unregisterProtocolHandler(scheme, url)
参数
返回值
无(undefined)。
异常
SecurityErrorDOMException-
用户代理阻止了注销。这可能发生的原因是:
- 协议(scheme)无效,例如浏览器自行处理的协议(
https:、about:等) - 处理程序 URL 的 源与调用此 API 的页面的源不匹配。
- 浏览器要求此函数必须从安全上下文调用。
- 浏览器要求处理程序的 URL 必须是 HTTPS。
- 协议(scheme)无效,例如浏览器自行处理的协议(
SyntaxErrorDOMException-
处理程序 URL 中缺少
%s占位符。
允许的协议
出于安全原因,unregisterProtocolHandler() 限制了可以注销哪些协议。
自定义协议可以被注销,只要
- 自定义协议的名称以
web+开头 - 自定义协议的名称在
web+前缀之后至少包含 1 个字母 - 自定义协议的名称只包含小写 ASCII 字母。
例如,web+burger,如下面的 示例所示。
否则,该协议必须是以下之一:
bitcoinftpftpsgeoimircircsmagnetmailtomatrixmmsnewsnntpopenpgp4fprsftpsipsmssmstossh电话urnwebcalwtaixmpp
示例
如果你的网站是 burgers.example.com,并且你有一个 web+burger: 协议,你可以像这样注销它的处理程序:
js
navigator.unregisterProtocolHandler(
"web+burger",
"https://burgers.example.com/?burger=%s",
);
此脚本必须从与处理程序 URL 相同的源运行(因此是 https://burgers.example.com 的任何页面),并且处理程序 URL 必须是 http 或 https。
规范
| 规范 |
|---|
| HTML # dom-navigator-unregisterprotocolhandler-dev |
浏览器兼容性
加载中…