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

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 の記事をご覧ください。