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化できないやつは…ま、そのうちなんとかしよう。

*1:日本語版はふと今日は・・・・・・ Custom Buttons 日本語化にて配布中。Firefox2.xでCustom Buttons 0.0.1.3が動かない方向けの修正版(0.0.2alpha)も配布されています。

*2:この説明でわかりづらければ、Keyconfig辺りを思い浮かべて欲しい。Keyconfigは自分の書いた「コード」をキーバインドすることができる拡張だが、Custom Buttonsではキーバインドの代わりにツールバーボタンを作る拡張、というわけだ。わっかるっかなー?