ネギのメモ帳

Twitterに書ききれないことをたまに書いたりするかもしれないスペース

現在のURLか選択文字列で検索するブックマークレット

何も選択してない場合は現在開いているページのURLを,
選択している場合はその文字列を,
検索クエリにするJavaScriptブックマークレットの例.

Twitterで検索する
javascript:(function(){
  function f(str) {
    window.open('http://twitter.com/search?q='+encodeURIComponent(str));
  };
  var slc = window.getSelection().toString();
  slc? f(slc): f(location.href);
})();
  • 処理全体を無名関数に包んで, 包んだ関数をその場で実行するというクロージャのお決まりの書き方.
  • セレクションを取ってきて, それが非空かどうかで分岐(三項演算子).
  • 同じURLに投げる場合は関数にまとめてしまった方がいい感じ.
  • 文字列変換にはencodeURIComponentを用い, escapeとかは使わない.
Ceronで検索する
javascript:(function(){
  var slc = window.getSelection().toString();
  if(slc){
    window.open('http://ceron.jp/search?q='+encodeURIComponent(slc));
  }else{
    window.open('http://ceron.jp/url/'+
    encodeURIComponent(location.hostname+location.pathname+location.search));
  }
})();
  • 扱うのが選択文字列かURLかで投げるURLが異なる場合は愚直に書くしかないはず.
  • 見栄えのため普通のif-elseで書いたけど, ブックマークレットはどうせ1行にまとめるので三項演算子でも問題ない.
  • URLからプロトコル部分を除いたものを渡したいのだが, replaceとかsplitとか使うとInternet ArchiveみたいなURLに出会ったときに困るので, 多分これくらいしか書きようがなさそう.


Chromeなら以下の拡張も便利.

SpellBook - ブックマークレットを右クリックから実行 - Chrome ウェブストア
http://chrome.google.com/webstore/detail/spellbook-execute-bookmar/ihckioenbbjedpocnnennnehjaacojil?hl=ja