いまさら人に聞けない Firebug tips

2年前の夏に書かれたFirebugの便利な組み込み関数 - 技術メモ帳を読んで、いまさらdebuggerと書くとそこからデバッガでステップ実行できるのを知ってショックでした....

lurkerさんのブログで紹介されている$0, $1 で直前にinspectしたものを参照できることも、なぜか公式のドキュメントっぽいFirebug Documentationには載っていなくて、FireBug Documentation - JoeHewitt.comには載っています。

で、もうひとつ、ソースコードにしか書かれてなさそうなやつを発見しました。$$1と$$2です。

自分はFirebugを使っていて、ときどきconsole.logで出したオブジェクトのプロパティを引数にして関数を呼んだりしたい、ということがあったけどできなくて困ってたんですが$$1でそういうことができるようになりました。

たとえばGreasemonkeyのGM_xmlhttpRequestで読み込んだURLの返したステータスコードや、中身をみたいとき、こんなふうにして表示しています。
    GM_xmlhttpRequest( {
        method: 'get',
        url: "http://labs.gmo.jp/blog/ku/",
        onload: function(res){
            console.log(res);
        }
    } );
コンソールにはObjectって出てきます。
Picture 19
これをクリックすると、responseTextでページの内容を見たりできますが、一行になっているのでうしろのほうは読めません。困った!
Picture 20-1
というときには$$1.responseTextと入れると、今見ていたオブジェクトの中身を$$1で参照することができるようになっているので、改行つきで見やすく出力させることができます。やったね。
Picture 21-1

ちなみに$$2は今見てたやつのまえのやつを参照できます。$0と違って$$0はありません。あ、まめ知識ついでにドキュメントに書かれてないようなので書いておくとFirebugのコマンドラインでcopy()を使ってクリップボードにデータをコピーできます。copy($$1.responseText)でページの内容をクリップボードにコピーできます。Firebugコンソールでマウスで囲んでコピーすると、改行がなくなっちゃったりへんなことになることがあるので、そういうときはcopy()をつかうといいですよ。

というわけで、検索してもヒットしにくくて知らぬは己ばかりなのかよくわからないので勢いで。

debugger

やや蛇足気味ながらもやっぱりdebuggerってこの機能がどうなってるのかと思ってちょこっとだけ調べてみたら、じつはdebuggerはECMAScriptの予約語になっていて、Firefoxのjavascript実行エンジンのSpidermonkeyがこの予約語をサポートして登録しているデバッガが起動するようになっているのでFirebugでステップ実行できる、みたいです。

おおー、じゃあこれで拡張機能の開発とかで理不尽なめに遭ったときにはステップ実行できるのか?と思っていくつかためしてみました。テストに使ったのはOSX(intel binary)用のFirefox3beta3です。

contentWindow(ふつうのウェブページのコンテキスト)

ふつうに使えます。ウェブのアプリケーション開発には当然ふつうに使えます。

contentWindowでeval

一応使えるけど行単位でしか実行してくれないので、事実上使えません。 evalするコードに改行を入れておいてみたらどうかと思ってやってみたら行番号を勘違いしているみたいで変になりました....

sandbox(Greasemonkeyのコンテキスト)

まったく反応しません。エラーが出たりもしないです。

chromeWindow(拡張機能のコンテキスト)

これもsandboxと同じでまったく反応しません。エラーも出ません。

mozJSSubScriptLoader(拡張機能で動的にロードしたファイル)

機能しません。debuggerで停止してデバッガに切り替わりますが、デバッガのボタンが反応しなくなっている雰囲気です。

拡張機能をデバッグするには

Firebugだと拡張機能のデバッグはできないようなので、古くからあるMozillaのjsデバッガVenkmanだとどうなのかなーと思って調べたところUse Tables! » Blog Archive » Venkman rescue meetingというのが見つかりました。これには
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で動かなくなっているらしいです。

tags

  • Firefox
  • debug
  • tips
  • 「いまさら人に聞けない Firebug tips」のはてなブックマーク数
  • 「いまさら人に聞けない Firebug tips」deliciousブックマーク数
  • 「いまさら人に聞けない Firebug tips」をはてなブックマークに追加
  • save "いまさら人に聞けない Firebug tips" to del.icio.us
  • 「いまさら人に聞けない Firebug tips」をリアルタイムブログ検索
  • permalink
  • XPathをてきとうに作ってくれる機能を追加したwebscraperp.js
  • てきとうにクリックしたらてきとうにWeb::Scraperのコードを作ってくれるWebScraper IDE

comments

TypeKey Enabled
スタイル用のHTMLタグが使えます。
*required

trackbacks

トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。

http://labs.gmo.jp/mt/mt-tb.cgi/205
©2010 Kentaro Kumagai, GMO Internet Labs., GMO Internet, inc.
bits and bytes
2008 .03. 06 17:18

tagcloud

  • API1
  • C/C++2
  • E4X1
  • FUSE2
  • Firefox20
  • HTML4
  • IE1
  • MySQL1
  • OSX4
  • Opera2
  • PHP4
  • XML1
  • XPCOM4
  • XPath3
  • apache2
  • binary2
  • book1
  • data12
  • debug5
  • design1
  • experiments3
  • extension11
  • google gears1
  • google maps API1
  • greasemonkey3
  • httpd5
  • javascript17
  • linux1
  • logging2
  • mobile3
  • perl4
  • tips5
  • tool11
  • vim2
  • visualization2
  • widget1
  • wii1
  • windows7
  • サービス6
  • 和訳1

Archives

  • 2008.03 (2)
  • 2008.02 (6)
  • 2008.01 (3)
  • 2007.12 (4)
  • 2007.11 (5)
  • 2007.10 (4)
  • 2007.09 (4)
  • 2007.08 (4)
  • 2007.07 (8)
  • 2007.06 (7)
  • 2007.05 (4)
  • 2007.04 (5)
  • 2007.03 (6)
  • 2007.02 (4)
  • 2007.01 (6)

about

  • bits and bytesのXML
  • 「bits and bytes」のCreative Commons
  • Powered by Movable Type
  • イベントと地図 - モグ
  • Use ecto to blog!
  • bits and bytesのはてなブックマーク数
  • bits and bytesをMy Yahoo!に追加
  • Subscribe with Bloglines