2年前の夏に書かれたFirebugの便利な組み込み関数 - 技術メモ帳を読んで、いまさらdebuggerと書くとそこからデバッガでステップ実行できるのを知ってショックでした....
lurkerさんのブログで紹介されている$0, $1 で直前にinspectしたものを参照できる
ことも、なぜか公式のドキュメントっぽいFirebug Documentationには載っていなくて、FireBug Documentation - JoeHewitt.comには載っています。
で、もうひとつ、ソースコードにしか書かれてなさそうなやつを発見しました。$$1と$$2です。
自分はFirebugを使っていて、ときどきconsole.logで出したオブジェクトのプロパティを引数にして関数を呼んだりしたい、ということがあったけどできなくて困ってたんですが$$1でそういうことができるようになりました。
GM_xmlhttpRequestで読み込んだURLの返したステータスコードや、中身をみたいとき、こんなふうにして表示しています。
GM_xmlhttpRequest( {
method: 'get',
url: "http://labs.gmo.jp/blog/ku/",
onload: function(res){
console.log(res);
}
} );
コンソールにはObjectって出てきます。

responseTextでページの内容を見たりできますが、一行になっているのでうしろのほうは読めません。困った!
$$1.responseTextと入れると、今見ていたオブジェクトの中身を$$1で参照することができるようになっているので、改行つきで見やすく出力させることができます。やったね。

ちなみに$$2は今見てたやつのまえのやつを参照できます。$0と違って$$0はありません。あ、まめ知識ついでにドキュメントに書かれてないようなので書いておくとFirebugのコマンドラインでcopy()を使ってクリップボードにデータをコピーできます。copy($$1.responseText)でページの内容をクリップボードにコピーできます。Firebugコンソールでマウスで囲んでコピーすると、改行がなくなっちゃったりへんなことになることがあるので、そういうときはcopy()をつかうといいですよ。
というわけで、検索してもヒットしにくくて知らぬは己ばかりなのかよくわからないので勢いで。
debuggerってこの機能がどうなってるのかと思ってちょこっとだけ調べてみたら、じつはdebuggerはECMAScriptの予約語になっていて、Firefoxのjavascript実行エンジンのSpidermonkeyがこの予約語をサポートして登録しているデバッガが起動するようになっているのでFirebugでステップ実行できる、みたいです。
おおー、じゃあこれで拡張機能の開発とかで理不尽なめに遭ったときにはステップ実行できるのか?と思っていくつかためしてみました。テストに使ったのはOSX(intel binary)用のFirefox3beta3です。
evalするコードに改行を入れておいてみたらどうかと思ってやってみたら行番号を勘違いしているみたいで変になりました....

Venkman as it is currently one of the only reasonable debugging tools for chrome-level JavaScript (as Firebug doesn’t work there).
と書いてあって、いまのところFirebugは拡張のコードはデバッグできないのでVenkmanだけが拡張機能のデバッグに使えるけど、最近あんまりメンテナンスされていないので最新版のFirefoxで動かなくなっているらしいです。
トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。
http://labs.gmo.jp/mt/mt-tb.cgi/205
comments