Navigator: unregisterProtocolHandler() 方法

安全上下文: 此功能仅在 安全上下文(HTTPS)中可用,在某些或所有 支持的浏览器 中可用。

Navigator 方法 unregisterProtocolHandler() 删除给定 URL 方案 的协议处理程序。

此方法是 registerProtocolHandler() 的逆方法。

语法

js
unregisterProtocolHandler(scheme, url)

参数

scheme

包含将要注销的协议处理程序中 允许的方案 的字符串。例如,可以通过传递 "sms" 方案来注销 SMS 文本消息链接的处理程序。

url

包含处理程序 URL 的字符串。此 URL 应与用于注册处理程序的 URL 相匹配(例如,它必须包含 %s

返回值

无 (undefined).

异常

SecurityError DOMException

用户代理阻止了注销。这可能会发生在以下情况下

  • 方案(协议)无效,例如浏览器本身处理的方案(https:about: 等)
  • 处理程序 URL 的 来源 与调用此 API 的页面的来源不匹配。
  • 浏览器要求从安全上下文中调用此函数。
  • 浏览器要求处理程序的 URL 必须是 HTTPS。
SyntaxError DOMException

处理程序 URL 中缺少 %s 占位符。

允许的方案

出于安全原因,unregisterProtocolHandler() 限制了可以注销的方案。

只要满足以下条件,就可以注销自定义方案

  • 自定义方案的名称以 web+ 开头
  • 自定义方案的名称在 web+ 前缀之后至少包含 1 个字母
  • 自定义方案的名称中只有小写 ASCII 字母。

例如,web+burger,如下面的 示例 中所示。

否则,方案必须是以下方案之一

  • bitcoin
  • ftp
  • ftps
  • geo
  • im
  • irc
  • ircs
  • magnet
  • mailto
  • matrix
  • mms
  • news
  • nntp
  • openpgp4fpr
  • sftp
  • sip
  • sms
  • smsto
  • ssh
  • tel
  • urn
  • webcal
  • wtai
  • xmpp

示例

如果您的网站是 burgers.example.com,并且您有 web+burger: 方案,您可以像这样注销它的处理程序

js
navigator.unregisterProtocolHandler(
  "web+burger",
  "https://burgers.example.com/?burger=%s",
);

此脚本必须从与处理程序 URL 相同的来源运行(因此是 https://burgers.example.com 上的任何页面),并且处理程序 URL 必须是 httphttps

规范

规范
HTML 标准
# dom-navigator-unregisterprotocolhandler-dev

浏览器兼容性

BCD 表格仅在浏览器中加载