Chrome の SlashSearch をパクる

ネタが無いので

ここ数日は新しい Sleipnir のネタが思いつかない*1ので、以前に作ってあって未公開だったスクリプトを晒すことにする。

どんなサイトでもスラッシュキーショートカットからの検索が可能な「SlashSearch」
ライフハッカーで先月紹介されてた Chrome用エクステンションの「SlashSearch」を真似て書いてみたものです。


SlashSearch.js

(function(){
	var ipt = document.getElementsByTagName("input");
	var flag = false;
	for(var i = 0; i < ipt.length; i++) {
		if(!ipt[i].className.match("SlashSearched") && ipt[i].type.toLowerCase() == "text") {
			setRangeFocus(ipt[i]);
			ipt[i].className += ipt[i].className + " SlashSearched";
			flag = true;
			break;
		}
	}
	
	if(!flag) {
		var query = prompt("Site in Ssearch", "");
		if(query) {
			var req = "http://www.google.com/search?q=" + query + "&hl=ja&ie=UTF-8&sitesearch=" + document.domain + "&domains=" + document.domain + "&filter=0&num=50";
			sleipnir.api.NewWindow(req, true);
		}
		for(var i = 0; i < ipt.length; i++) {
			if(ipt[i].className.match("SlashSearched")) {
				ipt[i].className = ipt[i].className.replace(" SlashSearched", "");
			}
		}
	}

// http://d.hatena.ne.jp/edvakf/20080912/1221167517
function setRangeFocus(ipt){
	var textbox=ipt;
	var range=textbox.createTextRange();
	range.select();
}

})();

テキストボックスにフォーカスが無いときにアクションを実行すると先頭のテキストボックスにフォーカスが移ります。
テキストボックスが無いページだと入力ダイアログが表示され、サイト内検索を行えます。
※まぁ、Chromeに入れてすら無くて記事のみで書いたので本当は違う動きかもしれませんw


あと、実行するたびに次のテキストボックスにフォーカスが移っていきます。
最後のテキストボックスで実行すると、入力ダイアログが表示されます。


シングルキーショートカットで使いたい場合は拙作「OneKeyActionKai」とか使ってください。

*1:Sleipnir Mobile for Android 用のエクステンションはいくつか書いてるけど