--- 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 ---
{{domxref("Navigator")}} の registerProtocolHandler() メソッドは、ウェブサイトが特定の URL スキーム (別名プロトコル) を開いたり処理したりする能力を登録することを可能にします。
例えば、この API はウェブメールサイトを mailto: の URL で開かせたり、 VoIP サイトを tel: の URL で開かせたりします。
navigator.registerProtocolHandler(scheme, url, title);
navigator.registerProtocolHandler(scheme, url) と更新されましたが、こちらに対応しているブラウザーは今のところありませx。scheme"sms" スキームを渡すことで、SMS テキストメッセージリンクを扱うように登録することができます。urlhttps でなければなりません。ブラウザーによってはセキュリティのため、 HTTPS の URL であることを求めるため、そうするべきです。title {{Obsolete_Inline}}https:, about:, など) など、登録されているスキーム (プロトコル) が無効です。%s が指定されたハンドラー URL に含まれていない。セキュリティ上の理由により registerProtocolHandler() は登録可能なスキームに制限を設けています。
カスタムスキームは次のような場合に登録されます。
web+ で始まるweb+ 接頭辞の後に1文字以上ある例えば下の {{anch("Example", "例")}} で使われている web+burger などが挙げられます。
もしくは、以下のホワイトリストに挙げられているスキームでなければなりません。
bitcoingeoimircircsmagnetmailtommsnewsnntpopenpgp4fprsipsmssmstosshtelurnwebcalwtaixmppウェブアプリケーションが 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 での例です。

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