カスタム プロトコル ハンドラの登録

Chrome 13 に navigator.registerProtocolHandler が追加されました。この API を使用すると、ウェブアプリで特定のプロトコルのハンドラとして自身を登録できます。たとえば、ユーザーは「mailto」リンクを処理するアプリケーションを選択できます。

次のようなプロトコル スキームを登録します。

navigator.registerProtocolHandler(
    'web+mystuff', 'http://example.com/rph?q=%s', 'My App');

最初のパラメータはプロトコルです。2 つ目は、このスキームを処理するアプリケーションの URL パターンです。パターンには、データのプレースホルダとして「%s」を含める必要があります。また、プロトコルを登録しようとしているアプリと同じオリジンである必要があります。ユーザーがアクセスを承認すると、アプリや他のサイトなどでこのリンクを使用できます。

<a href="web+mystuff:some+data">Open in "My App"</a>

このリンクをクリックすると、http://example.com/rph?q=web%2Bmystuff%3A:some%20dataGET リクエストが送信されます。したがって、q パラメータを解析して、プロトコルからデータを手動で除去する必要があります。

Firefox では FF3 以降、navigator.registerProtocolHandler が実装されています。Chrome の実装における違いの一つは、カスタム プロトコルに関するものです。上記の例のように、「web+」という接頭辞を付ける必要があります。「mailto」、「mms」、「nntp」、「rtsp」、「webcal」のプロトコルについては、「web+」接頭辞は不要です。

この API について詳しくは、MDN の記事をご覧ください。