« S2JDBC | メイン | ステートレスとステートフル »

rosy.js の ログコンソールに実行用の入力欄を付けてみようかと

最近仕事で JavaScript のコードを書いていて、FireFox だと firebug 超使える!便利!なんだけど、IEだとしょんぼり。

FireFox で上手く動いていたモノが、IEだとエラーを出したり。

しかも常にエラーじゃなくて、なんかの条件でぽろっと左下のステータス欄に黄色い三角形が出てくるわけです。

じゃあIEでも firebug のようにコンソールでJavaScriptを実行できるようにしたらええじゃん、と。

まあ、地道にアドレス欄からjavascript:hogehogeと入力すれば良いんですが、せっかくLogクラスを作っているんでこれに実装しちゃおうかなと。

イメージとしては、bookmarklet を実行してログウィンドウを開き、後は表示された入力欄でガシガシとJavaScriptを実行する、みたいな。

超お試しで作ってみたのが↓このbookmarklet。

start rosy log window


まだまだデバッグが足りない、というか読み込み時にstackのエラーが出ちゃうことが多い。

rosy.js本体のscriptタグをbodyにappendして、内容がコンパイルされないうちに、ウィンドウをロードする関数が動いちゃうんだよなぁ。

しょうがなしに今はtry catch で囲んで、catch句の中で同じ関数を呼び出すという荒技をしてます。このせいでstack overflow が発生するんですよねぇ。

※setInterval で関数が定義されるまで実行を繰り返し行うことで上記問題は対応しました。

世のbookmarkletはどうやってるんだろ。

明日はソースを読もう。そうしよう。