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

NavigatorregisterProtocolHandler() メソッドは、ウェブサイトが自身を特定のプロトコルのハンドラー候補として登録できるようにします。

ブラウザーはハンドラーのドメインとプロトコルが現在のサイトと一致する場合のみ、プロトコルハンドラーの登録を許可します。加えて、 registerProtocolHandler() の使用にあたり、安全なコンテキスト (つまり HTTPS で読み込まれたページ) を要求するようになりつつあります。

ブラウザーによってはこれらの制限を上書きする方法が提供されるかもしれません。

構文

navigator.registerProtocolHandler(protocol, url, title);

パラメーター

protocol
サイトが処理したいプロトコルを指定する文字列。例えば SMS のテキストメッセージリンクを処理するには、 "sms" スキームを処理するように登録します。
url
ハンドラーの URL を指定する文字列。この文字列には、処理される文書の URL をエスケープした者で置き換えられるプレイスホルダー "%s" を含めてください。この URL は本物の URL のほか、電話番号、メールアドレスなどにすることもできます。
メモ: ハンドラー URL のスキームは "http" もしくは "https" でなければなりません。ブラウザーによってはセキュリティのため、 HTTPS の URL であることを求めるため、そうするべきです
title
ユーザーが読むことができるプロトコルハンドラーのタイトル。これは必要に応じて、インターフェイスオブジェクトでユーザーに表示されます。

例外

SecurityError
ユーザーエージェントがプロトコルハンドラーの登録をブロックした。無効なスキームが指定された場合、例えば "http" が指定されているが、明白なセキュリティ上の問題があり登録させられない、またはブラウザーがこの関数を安全なコンテキストから呼び出すことを要求している、あるいはハンドラーの URL が HTTPS であることを要求している、といった場合にこの例外が発生します。
SyntaxError
指定されたハンドラー URL に "%s" が含まれていない。

許可されたスキーム

セキュリティ上の理由により registerProtocolHandler() は登録可能なスキームに制限を設けています。カスタムスキームの場合、 "web+" で始まり、 "web+" を含め5文字以上であり、小文字の ASCII 文字のみで構成されているものが登録可能です。例えば下の で使われている "web+burger" などが挙げられます。

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

  • bitcoin
  • geo
  • im
  • irc
  • ircs
  • magnet
  • mailto
  • mms
  • news
  • nntp
  • sip
  • sms
  • smsto
  • ssh
  • tel
  • urn
  • webcal
  • wtai
  • xmpp

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

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

このようにハンドラーを登録することで、web+burger:// リンクを通してユーザーをあなたのウェブアプリケーションに移動させることができます。リンクに含まれていたハンバーガーの情報はURLへ埋め込む形で渡されます。このスクリプトは同じドメイン (ここでは burgers.example.com 内のページ) で実行されなければならず、第 2 引数のスキームは httphttps のどちらか (ここでは https) でなければならないことを思い出してください。

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

仕様書

仕様書 状態 備考
HTML Living Standard
registerProtocolHandler() の定義
現行の標準 初回定義

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
基本対応Chrome 完全対応 13
補足
完全対応 13
補足
補足 Protocol whitelist includes mailto, mms, nntp, rtsp, and webcal. Custom protocols must be prefixed with web+.
Edge ? Firefox 完全対応 3IE ? Opera 完全対応 11.6Safari ? WebView Android 未対応 なしChrome Android 完全対応 ありEdge Mobile ? Firefox Android 完全対応 4Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
Secure context required (HTTPS)Chrome ? Edge ? Firefox 完全対応 62IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android 完全対応 62Opera Android ? Safari iOS ? Samsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, unarist, hamasaki, fscholz, khalid32, Potappo, drry, Mgjbot, Norah
最終更新者: mfuji09,