Googleサイト内検索をよりスムーズに行うブックマークレット(And More…)

古い記事ですがライフハッカー[日本版]にこんな記事があった。

今のところベストなサイト内検索の方法は、やっぱりこれだ : ライフハッカー[日本版]より引用:

本当はあってはならぬことなのですが、やっぱり埋め込みのサーチボックスはいつも完璧にすべての記事をさらってくれるわけではないようですね。うーむ、どうしたものか。そこで、同じ問題を抱える米Lifehackerでは記者のAdam Pash氏が「現状ベストなサイト内検索の方法」というのを紹介しています。その方法とはGoogleの「site:」検索を使うこと。

そしてその記事の末尾で紹介されていたMilly’s BookmarkletsのGoogleの項にて公開されているブックマークレットの使い勝手が非常にいい。コードとしてはたったの3行で、シンプルかつ軽快に動作する。ブックマークレットなので本来1行のコードであるが、改行とスペースを入れてコードを掲載する。

Milly’s BookmarkletsのGoogleの項掲載のブックマークレットを整形したコード

q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text);
if(!q) q = prompt("Search%20terms%20[leave%20selection%20and%20box%20blank%20to%20list%20all%20pages]%20...").replace(/\s\+/g,"%252B");
if(q! = null) location = "http://www.google.com/search?q=" + q.replace(/\s+/g,"+") + "+site:" + location.hostname;
  • 1行目: ページ内のテキスト選択範囲から検索クエリ作成。非選択ならばクエリはnullに。
  • 2行目: クエリがnullならばクエリ入力を求めるプロンプトを表示。
  • 3行目: クエリがnullでなければクエリに基づく閲覧中のサイトのサイト内検索結果のページへ遷移。

といった仕組み。これでテキスト選択状態でブックマークレットを実行すると選択テキストについてサイト内検索を行い、何も選択せずブックマークレットを実行するとサイト内検索を行う単語の入力ダイアログが表示されるという仕組みになっている。非常に簡単でスピーディーにサイト内検索が行える上、(これは少し余談だが、)この記事を書いている今現在僕はFirefox4.0.1を利用しているのだけれど、Firefox4.0.1でprompt()によって表示されるダイアログのインターフェースがとても気に入っているのでがんがん使いたくなってしまうブックマークレットである。

しかし、個人的には2つの改良点を思いついた。それは「どのドメインに対して検索を行うかをダイアログ上に明記したい」ということと「検索結果を新規タブで開きたい」ということである。それぞれの改良を施したコードが以下のものである。改良点ごとに色分けして、改行とスペースを入れてコードを掲載する。

改良後のコード

q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text);
if(!q) q = prompt("Search%20on%20[" + location.hostname + "]").replace(/\s\+/g,"%252B");
if(q! = null) window.open("http://www.google.com/search?q="+q.replace(/\s+/g,"+")+"+site:"+location.hostname);
  • prompt()の第一引数である表示されるメッセージの部分を変更
  • クエリがある場合、locationでページを遷移するのでなくwindow.open(“開くページのURL”)で新規タブに開く

という改良を行った。これで求める動作を得ることができた。さらにこのブックマークはURLにクエリを付加する形で検索を行うすべての検索エンジンに適応可能であり、コード末尾のwindow.open()の第一引数に指定するURLを工夫することでお好みの検索メニューを作るのは簡単である。特に今回はGoogle画像検索・Google翻訳(和→英)・Google翻訳(英→和)・Google Maps検索でのブックマークレットをあわせて作成したので最後に紹介する。

それぞれ利用する場合は、新規ブックマークレット作成しURL欄に下記コードを貼り付ける事で使用できます。

Google Site Search (改良版)のコード

javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Search%20on%20["+location.hostname+"]").replace(/\s\+/g,"%252B");if(q!=null)window.open("http://www.google.com/search?q="+q.replace(/\s+/g,"+")+"+site:"+location.hostname);void(0);

Google Image Search Bookmarkletのコード

javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Google%20Image%20Search").replace(/\s\+/g,"%252B");if(q!=null)window.open("http://www.google.co.jp/images?rls=ig&hl=ja&source=imghp&biw=1151&bih=600&q="+q.replace(/\s+/g,"+"));void(0);

Google Translate [Japanese-English] Bookmarkletのコード

javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Google%20Translate%20[Japanese-English]").replace(/\s\+/g,"%252B");if(q!=null)window.open("http://translate.google.co.jp/#ja|en|"+q.replace(/\s+/g,"+"));void(0);

Google Translate [English-Japanese] Bookmarkletのコード

javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Google%20Translate%20[English-Japanese]").replace(/\s\+/g,"%252B");if(q!=null)window.open("http://translate.google.co.jp/#en|ja|"+q.replace(/\s+/g,"+"));void(0);

Google Maps Search Bookmarkletのコード

javascript:q=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);if(!q)q=prompt("Google%20Maps%20Search").replace(/\s\+/g,"%252B");if(q!=null)window.open("http://maps.google.co.jp/maps?q="+q.replace(/\s+/g,"+"));void(0);

動作はすべて同じで、テキスト選択状態ならそのまま選択部分をキーワードに新規タブで検索結果を開き、選択状態でなければ入力ダイアログが表示され入力後に新規タブで検索結果が開かれる仕組みです。Firefox 4.0.1, Google Chrome 11.0.696.65, Opera 11.10で正常に動作することを確認しました。

t87r について

趣味:トランペット・釣り・コーディング JavascriptとGAE/Pythonを勉強中。
カテゴリー: Uncategorized | タグ: , , | 投稿パーマリンク

コメントする

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

%s に接続中