検索結果のページからFirefoxの検索プラグインを生成するブックマークレット/スマートキーワード
検索結果のページからFirefoxの検索プラグイン*1を生成するブックマークレットです。
ブックマークレットとしても、スマートキーワードとしても使えるようにしています。
↓の1行コードをブックマークに登録して使います。*2
javascript:(function(){ var s = '%s'; var name; var template = location.href; var encoding = document.characterSet || document.charset; if (s.match(/http:\/\//)) { [template, name, encoding] = s.split(/; ?/); } else if (s && !(s.match(/^[%]s$/))) { name = s; } else { name = document.title.replace(/%25s|%2525s/, '').replace(/ [-|/:]{1,2} /, ''); } template = template.replace(/%25s|%2525s/, '{searchTerms}').replace('&', '&'); var re_charset = /^(UTF-8|Shift_JIS|EUC-JP|ISO-2022-JP)$/i; var re_template = /^http:\/\//; if (name.match(re_charset)) { [name, encoding] = [encoding, name]; } if (name.match(re_template)) { [name, template] = [template, name]; } if (encoding.match(re_template)) { [encoding, template] = [template, encoding]; } if (template.match(re_charset)) { [encoding, template] = [template, encoding]; } var filename = name.replace(/[^-a-zA-Z0-9_.()]/g, '').replace(/^[ ]*|[ ]*$/, '').toLowerCase() + '_os.xml'; var text = ('<?xml version="1.0" encoding="UTF-8"?>\n<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">\n <ShortName>' + name + '</ShortName>\n <Description>' + name + '</Description>\n <InputEncoding>' + encoding + '</InputEncoding>\n <Url type="text/html" method="GET" template=' + template + '" />\n</OpenSearchDescription>'); document.write( '<html><head><title>SearchPlugin Maker</title></head><body></p><a href="' + 'data:application/octet-stream,' + encodeURIComponent(text) + '">' + filename + '</a></p><pre>' + text.replace(/</g, '<').replace(/>/g, '>') + '</pre></body></html>' ); })();
ブックマークレットとしての使い方
検索プラグインを作りたいサーチエンジンで %s で検索します。
そして、検索プラグイン生成のブックマークを選ぶと、検索プラグインファイルのリンクが表示されるので、
Altキー または option キーを押しながらクリックしてダウンロードします。
この使い方の場合、サーチエンジン名は自動生成なので、適切な名前が設定されない場合があります。
(ダウンロードしたファイルをテキストエディタ*3で編集すれば変更できます。)
スマートキーワードとしての使い方
↑のコードを登録したブックマークにキーワードを設定します。(たとえば sp)
検索プラグインを作りたいサーチエンジンで %s で検索します。
そして、アドレスバーに設定したキーワードを入力すると、検索プラグインファイルのリンクが表示されるので、
Altキー または option キーを押しながらクリックしてダウンロードします。
この方法の場合、アドレスバーに入力する文字を「<キーワード> <サーチエンジン名>」とすると、検索バーに表示されるサーチエンジン名が指定できます。*4
Firefoxの検索バーに追加する方法
これで検索プラグインをダウンロードしたら、Firefoxのプロファイルフォルダに検索プラグインのファイルを移動します。
移動させる場所は環境によっても違いますが、
Windows 2000/XP/Vista/7 なら
C:\Documents and Settings\<ユーザ名>\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\
Mac OS X なら
/Users/<ユーザ名>/Library/Application Support/Firefox/Profiles/xxxxxxxx.default/
Linux なら
~/.mozilla/firefox/xxxxxxxx.default/
であるのが一般的です。
ソースコード
javascript:(function(){ var s = '%s'; var name; var template = location.href; var encoding = document.characterSet || document.charset; if (s.match(/http:\/\//)) { [template, name, encoding] = s.split(/; ?/); } else if (s && !(s.match(/^[%]s$/))) { name = s; } else { name = document.title.replace(/%25s|%2525s/, '').replace(/ [-|/:]{1,2} /, ''); } template = template.replace(/%25s|%2525s/, '{searchTerms}').replace('&', '&'); var re_charset = /^(UTF-8|Shift_JIS|EUC-JP|ISO-2022-JP)$/i; var re_template = /^http:\/\//; if (name.match(re_charset)) { [name, encoding] = [encoding, name]; } if (name.match(re_template)) { [name, template] = [template, name]; } if (encoding.match(re_template)) { [encoding, template] = [template, encoding]; } if (template.match(re_charset)) { [encoding, template] = [template, encoding]; } var filename = name.replace(/[^-a-zA-Z0-9_.()]/g, '').replace(/^[ ]*|[ ]*$/, '').toLowerCase() + '_os.xml'; var text = ('<?xml version="1.0" encoding="UTF-8"?>\n<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">\n <ShortName>' + name + '</ShortName>\n <Description>' + name + '</Description>\n <InputEncoding>' + encoding + '</InputEncoding>\n <Url type="text/html" method="GET" template=' + template + '" />\n</OpenSearchDescription>'); document.write( '<html><head><title>SearchPlugin Maker</title></head><body></p><a href="' + 'data:application/octet-stream,' + encodeURIComponent(text) + '">' + filename + '</a></p><pre>' + text.replace(/</g, '<').replace(/>/g, '>') + '</pre></body></html>' ); })();