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

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