Navigator: unregisterProtocolHandler() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

Navigator 介面的 unregisterProtocolHandler() 方法用於移除給定 URL 協議的協議處理器。

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

語法

js
unregisterProtocolHandler(scheme, url)

引數

scheme

一個包含要登出的協議處理器中 允許的協議的字串。例如,你可以透過傳遞 "sms" 協議來登出 SMS 簡訊連結的處理程式。

url

一個包含處理程式 URL 的字串。此 URL 應該與註冊處理程式時使用的 URL 匹配(例如,必須包含 %s

返回值

無(undefined)。

異常

SecurityError DOMException

使用者代理阻止了登出。這可能發生的原因是:

  • 協議(scheme)無效,例如瀏覽器自行處理的協議(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
  • 電話
  • 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

瀏覽器相容性