2008/08/08

Wikitravel用検索Bookmarklet (Firefox, Safari)

2007年の秋にウィキトラベルの検索で不具合が起きた際、ウィキトラベルの各言語版shared画像収納庫)を横断的に一括検索できると便利だなと思って作ってみたブックマークレットです。FirefoxとSafariで動きます(Windows XP Service Pack 3で確認)。Internet Explorer用は別途作成しています。

上手く説明できないのですが、使い方は次の通りです。
Wikitravelのページで何も選択せずにそのままブックマークレットをクリックした場合
→ プロンプトを表示し、そこに入力されたキーワードでGoogleのドメイン指定検索(site:wikitravel.orgを指定した検索)を行います。
Wikitravelのページ上の文字列を選択した状態でブックマークレットをクリックした場合
→ 選択した文字列でGoogleのウェブ検索(ドメイン指定無し)を行います。
Wikitravelの検索結果ページでブックマークレットをクリックした場合
→ レフトナビの検索box内のキーワードでGoogleのドメイン指定検索(site:wikitravel.orgを指定した検索)を行います。
Wikitravelの検索結果ページ上の文字列を選択した状態でブックマークレットをクリックした場合
→ 選択した文字列でGoogleのウェブ検索(ドメイン指定無し)を行います。
他のサイト (*) で何も選択せずにそのままブックマークレットをクリックした場合
→ プロンプトを表示し、そこに入力されたキーワードでGoogleのドメイン指定検索(site:wikitravel.orgを指定した検索)を行います。
他のサイト (*) で文字列を選択した状態でブックマークレットをクリックした場合
→ 選択した文字列でGoogleのドメイン指定検索(site:wikitravel.orgを指定した検索)を行います。
* ··· ウィキペディアなどのMediaWikiを使用しているサイト(検索boxがId="searchInput"となっているサイト)では、Wikitravelのページ上での使用と同じ動作(site:wikitravel.orgの指定の有無)になります。

ブックマークレットの入手方法
  • Firefoxの場合は、"WT to Google"のリンクを右クリックして「このリンクをブックマーク」を選択して保存して下さい。
  • Safariの場合は、"WT to Google"のリンクをドラッグしてブックマークバーにドロップして下さい。


コード

後で見たくなるような気がするのでここに置いておくことにしました。読み易くするために改行とインデントを入れてあります。
javascript:

var selectText=window.getSelection();

if(document.getElementById('searchInput'))
 var searchValue=document.getElementById('searchInput').getAttribute('value');

if(selectText!=''){

 if(searchValue==undefined){
  location.href='http://www.google.com/search?q='+encodeURIComponent(selectText)+'+site:wikitravel.org'
 }
 else{
  location.href='http://www.google.com/search?q='+encodeURIComponent(selectText)
 }

}
else{

 if((searchValue=='')||(searchValue==undefined)){
  void(searchValue=prompt('Keywords...',''));
 };

 if(searchValue)
  location.href='http://www.google.com/search?q='+encodeURIComponent(searchValue)+'+site:wikitravel.org'

}
Atom