それマグで!

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

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

IEを呼び出す

前回のIE利用法をさらに検索してた。


少しずつ分ってきた

IEのJsエンジンを作り出す

#IEのDocumentをWSHから利用する
var document = new ActiveXObject('htmlfile');
window = document.parentWindow;
window.alert("");
window.document.body.innerHTML += "hoge";
//Scriptタグ書出せばWSHでprototype.jsが使えるよ。

JSのエンジンを作り出す

WSHのJSを別環境で独立に生み出せる。

var engine = new ActiveXObject("ScriptControl");
engine.Language = "JScript";
js = engine.CodeObject;
WScript.Echo( js.eval("aa=1") );
WScript.Echo( js.aa );// 1 が表示される

空間が違う。evalが必要っぽい。うまく使うと便利そう。IEみたくDefer指定出来ないのか。

文字列評価が不要

変数名や関数名を文字列で指定する必要がない。

今までの方法

var sc = new ActiveXObject( "ScriptControl" );
var code;
sc.Language = "JavaScript";

code = "function foo(){ return 'abcd'; }"; 
sc.AddCode( code );
var r = sc.Run( "foo" );

Runが必要だと思ってた。今日のテストでRunが要らないと分った。

同じようにVBも作れる

もちろんVBScriptについてもできるが。。

var sc = new ActiveXObject("ScriptControl");
sc.Language = "VBScript";
vb = engine.CodeObject;
vb.MsgBox("hoge") );

なぜか動かない。VBよくわからにゃい