Navigator: unregisterProtocolHandler() メソッド

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

NavigatorunregisterProtocolHandler() は、指定された URL スキームからプロトコルハンドラーを取り除きます。

このメソッドは registerProtocolHandler() の逆です。

構文

js
unregisterProtocolHandler(scheme, url)

引数

scheme

このプロトコルハンドラーで登録解除する許可されているスキームの入った文字列。 例えば、"sms" スキームを渡すと、SMSテキストメッセージリンク用のハンドラーを登録解除できます。

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 は http または https でなければなりません。

仕様書

Specification
HTML Standard
# dom-navigator-unregisterprotocolhandler-dev

ブラウザーの互換性

BCD tables only load in the browser