--- 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 テキストメッセージリンクを扱うように登録することができます。url
https
でなければなりません。ブラウザーによってはセキュリティのため、 HTTPS の URL であることを求めるため、そうするべきです。title
{{Obsolete_Inline}}https:
, about:
, など) など、登録されているスキーム (プロトコル) が無効です。%s
が指定されたハンドラー URL に含まれていない。セキュリティ上の理由により registerProtocolHandler()
は登録可能なスキームに制限を設けています。
カスタムスキームは次のような場合に登録されます。
web+
で始まるweb+
接頭辞の後に1文字以上ある例えば下の {{anch("Example", "例")}} で使われている web+burger
などが挙げられます。
もしくは、以下のホワイトリストに挙げられているスキームでなければなりません。
bitcoin
geo
im
irc
ircs
magnet
mailto
mms
news
nntp
openpgp4fpr
sip
sms
smsto
ssh
tel
urn
webcal
wtai
xmpp
ウェブアプリケーションが 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")}}