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 |
瀏覽器相容性
載入中…