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

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 の実装における違いの 1 つは、カスタム プロトコルに関することです。上記の例に示すように、これらの名前には「web+」という接頭辞を付ける必要があります。次のプロトコルには「web+」接頭辞は必要ありません。「mailto」、「mms」、「nntp」、「rtsp」、「webcal」。

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