--- title: Navigator.registerProtocolHandler() slug: Web/API/Navigator/registerProtocolHandler tags: - API - DOM - DOM Reference - Method - Navigator - Reference - Web-Based Protocol Handlers - registerProtocolHandler translation_of: Web/API/Navigator/registerProtocolHandler ---
{{APIRef("HTML DOM")}}{{securecontext_header}}

{{domxref("Navigator")}}registerProtocolHandler() メソッドは、ウェブサイトが特定の URL スキーム (別名プロトコル) を開いたり処理したりする能力を登録することを可能にします。

例えば、この API はウェブメールサイトを mailto: の URL で開かせたり、 VoIP サイトを tel: の URL で開かせたりします。

構文

navigator.registerProtocolHandler(scheme, url, title);
注: 最近になって navigator.registerProtocolHandler(scheme, url) と更新されましたが、こちらに対応しているブラウザーは今のところありませx。

引数

scheme
サイトが処理したいプロトコルを指定する文字列。例えば、 "sms" スキームを渡すことで、SMS テキストメッセージリンクを扱うように登録することができます。
url
ハンドラーの URL を指定する文字列。この文字列には、処理される文書の URL をエスケープした者で置き換えられるプレイスホルダー "%s" を含めてください。この URL は本物の URL のほか、電話番号、メールアドレスなどにすることもできます。
注: ハンドラー URL のスキームは https でなければなりません。ブラウザーによってはセキュリティのため、 HTTPS の URL であることを求めるため、そうするべきです
title {{Obsolete_Inline}}
ハンドラーを表す人間が読めるタイトル文字列です。これは、「このサイトで [スキーム] リンクを扱うことを許可しますか?」というプロンプトや、ブラウザーの設定で登録されたハンドラーを一覧表示するなどの形でユーザーに表示されます
注: タイトルはなりすましの懸念から仕様から削除されましたが、現在のすべてのブラウザーではまだ必要とされています。更新された仕様に対応しているブラウザーはほとんどの場合、下位互換性があり、まだ受け付けている可能性が高いので、常にタイトルを設定しておくことをお勧めします (ただし、使用はしません)。

例外

{{Exception("SecurityError")}}
ユーザーエージェントが登録をブロックしました。以下のような場合に起こる可能性があります。
{{Exception("SyntaxError")}}
%s が指定されたハンドラー URL に含まれていない。

許可されたスキーム

セキュリティ上の理由により registerProtocolHandler() は登録可能なスキームに制限を設けています。

カスタムスキームは次のような場合に登録されます。

例えば下の {{anch("Example", "例")}} で使われている web+burger などが挙げられます。

もしくは、以下のホワイトリストに挙げられているスキームでなければなりません。

ウェブアプリケーションが burgers.example.com にある場合、次のようにして web+burger: リンクを処理するプロトコルハンドラーを登録できます:

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

これは、 web+burger: リンクがアクセスしたバーガーの URL を %s プレースホルダーに挿入し、ユーザーをサイトに誘導するハンドラーを作成します。

このスクリプトはハンドラーの URL と同じオリジン (すなわち、 https://burgers.example.com にあるページのいずれか) から実行する必要があり、ハンドラーの URL は http または https である必要があります。

あなたのコードがプロトコルハンドラーを登録しようとしていることはユーザーに通知され、ユーザーは登録を許可するかどうか決めることができます。以下のスクリーンショットは google.co.uk での例です。

A browser notification reads “Add Burger handler (www.google.co.uk) as an application for burger links?”, and offers an “Add Application” button and a close to ignore the handler request.

仕様書

仕様書 状態 備考
{{SpecName('HTML WHATWG', 'system-state.html#custom-handlers', 'registerProtocolHandler()')}} {{Spec2('HTML WHATWG')}} Living standard

ブラウザーの互換性

{{Compat("api.Navigator.registerProtocolHandler")}}

関連情報