![]()
IE8の新機能「アクセラレータ」Accelerator の作り方
川崎 です。普段の常用ブラウザとしては、画面が広く使える Chrome を使っているのですが、Internet Explorer 8 Beta 2 に搭載されている新機能「アクセラレータ」について、調べてみました。
Beta 1 までは「Activities」と呼ばれていたコンテキスト駆動?の検索機能です。
以下のような XML で定義ファイルを記述するだけなので、手軽に実装できます。
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0">アクセラレータの使い方について、詳しくは Microsoftのサイトを参照。
<homepageUrl>http://example.com/</homepageUrl>
<display>
<name>○○検索</name>
<icon>http://example.com/favicon.ico</icon>
</display>
<activity category="Map">
<activityAction context="selection">
<execute method="get" action="http://example.com/execute.cgi">
<parameter name="query" value="{selection}" type="text" />
</execute>
<preview method="get" action="http://example.com/preview.cgi">
<parameter name="query" value="{selection}" type="text" />
</preview>
</activityAction>
</activity>
</openServiceDescription>
要は、画面遷移する execute と、吹き出し表示する preview の2種類があります。
ブラウザの画面上で選択中の文字列が、{selection} に渡されます。
日本語などは、デフォルトでは UTF-8 で URL エンコードされます。
execute 要素で accept-charset="Shift_JIS" 等とすれば、文字コードを指定できます。
execute 要素の action 属性の URL 中に {selection} を使うこともできます。
クエリ変数が複数ある場合は、parameter 要素を複数並べても OK。
execute や preview の action 先の URL は、すべてhomepageUrl のドメインに一致する必要があります、
というのを知らずに、ハマりました。icon は、別ドメインでも大丈夫なようです。
ドメインが同じであれば、サブドメインが違っても OK なようですが、
サブドメインの何階層まで判定しているのかとか、詳細な仕様は不明です。
とりあえず、安全のために、ドメインをそろえておいた方が確実そうです。
Beta 1 時点の資料で この日本語 PDF が詳しいですが、そこまで載っていません。
作成した XML ファイルを例えば accelerator.xml というファイル名にしたら、JavaScript で
window.external.addService('accelerator.xml');
を実行すれば、IE8 にアクセラレータが登録されます。
addService メソッドの引数は、XML ファイルに繋がれば相対 URL でも OK。
一般公開されているアクセラレータは、Internet Explorer Gallery に掲載されてます。(英語)
このギャラリー・サイトはまだ日本語対応されていませんが、英語以外にも
ドイツ語・中国語は既に公開されている。日本語が後回しなのは残念なところ。
