ウェブページからの検索エンジンの追加

Firefox では JavaScript コードから検索プラグインをインストールすることができ、OpenSearch と Sherlock という 2 つの検索プラグインフォーマットをサポートしています。

注意: Firefox 2 からは、OpenSearch が Firefox の検索フォーマットとして推奨されています。

JavaScript コードが検索プラグインをインストールしようとすると、Firefox はユーザにプラグインのインストールを許可するか尋ねる警告を表示します。

OpenSearch プラグインのインストール

OpenSearch プラグインをインストールするには、window.external.AddSearchProvider() DOM メソッドを使う必要があります。このメソッドの構文はこのようになります。

window.external.AddSearchProvider(engineURL);

engineURL は検索プラグイン XML ファイルへの絶対 URL です。

注意: OpenSearch は Firefox 2 以降でのみサポートされています。

Sherlock プラグインのインストール

Sherlock プラグインをインストールするには、window.sidebar.addSearchEngine() を呼び出す必要があり、その構文は以下のとおりです。

window.sidebar.addSearchEngine(engineURL, iconURL, suggestedName, suggestedCategory);
  • engineURL パラメータはインストールする Sherlock プラグイン (".src" ファイル) の URL です。
  • iconURL はプラグインに関連付けるアイコンの URL です。
  • suggestedName パラメータはプラグインのインストールの許可をユーザに尋ねるときにだけ使用します。つまり 「engineURL から suggestedName をインストールしますか?」 のようなメッセージが表示されるでしょう。
  • suggestedCategory パラメータは使われていません。空の文字列 ("") か null を指定すべきです。

Sherlock の詳細は http://developer.apple.com/macosx/sherlock/ を参照ください。

ブラウザの検索エンジン機能の検出

検索エンジンを追加するための API は Firefox 1.5 から Firefox 2 までに変更されており、また Firefox 1.5 は OpenSearch 記述ファイルをサポートしていません。このため、検索エンジンを追加する時に後方互換性を維持したい場合、すなわち Firefox 1.5, Firefox 2.0, IE7 で動作するようにしたい場合、Web ページの製作者は Sherlock と OpenSearch の両方のフォーマットに対応し、またブラウザの機能を適宜検出しなければなりません。次のコード片はこういったことを行う一つの例です。

function installSearchEngine() {
 if (window.external && ("AddSearchProvider" in window.external)) {
   // Firefox 2 と IE 7 では OpenSearch を使う
   window.external.AddSearchProvider("http://example.com/search-plugin.xml");
 } else if (window.sidebar && ("addSearchEngine" in window.sidebar)) {
   // Firefox 1.5 以下では Sherlock を使う
   window.sidebar.addSearchEngine("http://example.com/search-plugin.src",
                                  "http://example.com/search-icon.png",
                                  "Search Plugin", "");
 } else {
   // 検索エンジンはサポートされていない (IE 6, Opera など)
   alert("No search engine support");
 }
}


Document Tags and Contributors

Contributors to this page: Shoot, Potappo, Taken, Mgjbot
最終更新者: Mgjbot,