それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

JSコンソール for IE を作ってみよう

FireBugみたく、簡便にIEをデバッグしたい情熱からJSコンソールを作ってみる。4日目

現状のソース

//windowオブジェクト取得関数
var loadURL = function(url){
  ie = new ActiveXObject("InternetExplorer.Application");
  ie.Visible = true;
  ie.Navigate(url);
  while(ie.Busy){
    WScript.Sleep(1);
  }
  return ie.Document.parentWindow;
}
//メイン処理
window = loadURL("about:blank");//window変数にIEを入れる
WScript.StdOut.Write("js> ");
while (!WScript.StdIn.AtEndOfStream)
{
  try{
    var str = WScript.StdIn.ReadLine();
    WScript.StdOut.WriteLine(  eval (str)  );//evalしてる
  }catch(e){
    WScript.StdOut.WriteLine(e);
  }finally{
    WScript.StdOut.Write("js> ");
  }
}

これをWindowsのコマンドプロンプトから実行してやる


JSコンソールから行う処理

  • 空白ページにリンクを書出してJavaScriptからクリックしてやる。
C:\Documents and Settings\takuya_1st\cscript //nologo IEデバッガ.js
js> window.location 
about:blank
js> window.eval("alert()") 
[object Error]
js> window.alert("hello from IE");

js> window.document.write("<a href='http://www.hatena.ne.jp/' id='hatena'>はてな</a>"); 

js> a = window.document.getElementById("hatena"); http://www.hatena.ne.jp/
js> a.click(); 

js> window.alert(); 
[object Error]
js>

コンソールで行ってる処理の概要

  1. alertのテスト・・・成功
  2. 現在のLocation
  3. evalのテスト・・・失敗
  4. リンク作成
  5. DOM走査でAnchor取得
  6. リンクをクリックする
  7. ページ移動後はAlertすらエラー


おおおおおおおおおおお、IE制御をコマンドから行えた。
かなりJSコンソールらしくなってきた。

IEを使ったJavaScriptデバッグやDOM処理が可能に。
IEとコマンドプロンプトの組合わせでfirebugの代わり

今日分った問題

  • JiGOROuさんのいうようにwindow.evalが必要。だけどevalメソッドが消えた。
  • ページを移動するとWSHがポイントしているWindowが消える

つまりページ移動するたびにWindowオブジェクトを再取得しなくてはいけない。
ただ、これはfirebugでも未サポート問題なのでスルーする。


明日からはwindow.evalが[object Error]になる問題を真剣に悩むことにする。