bookmarkletをCustom Buttonsのスクリプトに(適当に)直す方法
Custom Buttons*1というFirefoxアドオンがある。
この拡張は本来、Firefoxの各種機能をツールバーボタン化することを目的としたもの*2だが、少し手を加えれば、ブックマークツールバーにずらずらと並ぶbookmarkletをアイコン化して整理することができる。bookmarkletが多すぎてぐちゃぐちゃだよ!って悩んでるそこのお兄さん、bookmarklet多いからはてなのbookmarkletは消してはてなツールバー入れちゃったよ…なんて落ち込んでるそこのお嬢さん。必見です。
(図1)中央の2つがCustom Buttonsで作成したbookmarkletボタン。
まず覚えておかなければいけないのが、Custom Buttonsの「コード」は、bookmarkletに書かれているjavascriptと同じではないということ。そりゃそうだよね、本来はFirefoxの機能をボタン化するための「コード」なんだから。bookmarkletをCustom Buttonsのボタンにするには、コードにいくらかの修正を施さなければならない。
ここでは、最も簡易的な修正方法を示してゆく。
「現在のURLを引数として別のURLに遷移」系のbookmarkletを直す
タイトルが長ったらしくなったが、要するに「はてなブックマークにブックマーク」ボタンなんかがこの類だ。http://www.google.co.jp/を見ている時にボタンを押すとhttp://b.hatena.ne.jp/add?mode=confirm&title=Google&url=http://www.google.co.jp/に移動するようなボタンを作る方法。
まず、元になるbookmarkletを以下に示す。
javascript:window.open('http://b.hatena.ne.jp/add?mode=confirm&title='+encodeURIComponentdocument.title)+'&url='+encodeURIComponent(location.href));undefined;
- 頭の『javascript:window.open』は『gBrowser.selectedTab=gBrowser.addTab』に直す。
- 『document.title』の類は『window._content.document.title』に直す。
- 『location.href』は例外的に『window._content.document.location.href』に直す?
こうしてできたコードは以下の通り。
gBrowser.selectedTab=gBrowser.addTab('http://b.hatena.ne.jp/add?mode=confirm&title='+encodeURIComponentwindow._content.document.title)+'&url='+encodeURIComponent(window._content.document.location.href));undefined;
めちゃくちゃ適当ですが、この法則で大抵はいけるはずです。
ていうか、URLを渡すだけのコード/bookmarkletはいくらでも使いまわせるから、定型でメモしておくといいかも。
javascript:window.open('http://sample.url/url='+encodeURIComponent(location.href));undefined;
gBrowser.selectedTab=gBrowser.addTab('http://sample.url/url='+encodeURIComponent(window._content.document.location.href));undefined;
この方法でCustom Buttons化できないやつは…ま、そのうちなんとかしよう。