前回の記事でも書いた、テスト用のCOM。そのイベント処理をJavaScriptで使う場合、WSHならば前回の記事の方法を使えばイベントハンドラも設定できるが、HTMLのJavaScriptだと、その方法も使えないので、イベントハンドラをプロパティとして指定するようにした。
ちなみに以下がテスト用のWSH。
ここで、問題が出た。イベントハンドラ(objTest_onchange)では、thisがそのCOMオブジェクトなのだが、プロパティとして渡した方(changed)がthisが違うもの。とある方法で調べてみると、changedのthisのクラス名は全然別のもの・・・。困ったぞ・・・。
ちなみに以下がテスト用のWSH。
var objTest = WScript.CreateObject("testcom.counter", "objTest_");
if( objTest )
{
msg( "CreateObject() succeeded." );
msg( "Default value is "+objTest.value );
objTest.onchange = changed;
objTest.inc();
objTest.dec();
for(var i=0;i<10;i++) WScript.Sleep(1000);
}
else
msg( "CreatetObject() failed." );
function objTest_onchange(c)
{
msg( "(EVENT)Value changed. New value is "+c.value+"(c) / "+this.value+"(this)" );
}
function changed(c)
{
msg( "(CALL)Value changed. New value is "+c.value+"(c) / "+this.value+"(this)" );
}
function msg(txt)
{
WScript.Echo( txt );
}
ここで、問題が出た。イベントハンドラ(objTest_onchange)では、thisがそのCOMオブジェクトなのだが、プロパティとして渡した方(changed)がthisが違うもの。とある方法で調べてみると、changedのthisのクラス名は全然別のもの・・・。困ったぞ・・・。
≫[COMのイベントで・・・]の続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
|
前回の書込みから2ヶ月経っている・・・(^^;
最近、ちょっと仕事も落ち着き、COMなどプログラミングしてみた。
で、検証用にWSHを使ってみたのだが、最初どうやってイベントハンドラを定義してよいかわからなかった。どうやら以下のようなコードでイベントを受理できるらしい。
testcom.counterというProgIDのCOMを作ってテストしたときのWSHである。CreateObjectの第2引数でイベント受理用の関数のプリフィクスを指定する。上のCOMは値が変化したときにonchangeというイベントが発生するのだが、上のようなコードを書くとそのイベントが発生したとき、objTest_onchange関数がコールされる。
ただ残念なのは、この方法が使えるのがWSHのみで、html上のJavaScriptでは使えないということだ。
最近、ちょっと仕事も落ち着き、COMなどプログラミングしてみた。
で、検証用にWSHを使ってみたのだが、最初どうやってイベントハンドラを定義してよいかわからなかった。どうやら以下のようなコードでイベントを受理できるらしい。
var objTest = WScript.CreateObject("testcom.counter", "objTest_");
if( objTest )
{
msg( "CreateObject() succeeded." );
msg( "Default value is "+objTest.value );
objTest.inc();
objTest.dec();
for(var i=0;i<10;i++)
WScript.Sleep(1000);
}
else
msg( "CreatetObject() failed." );
function objTest_onchange(c)
{
msg( "(EVENT)Value changed. New value is "+this.value );
}
function msg(txt)
{
WScript.Echo( txt );
}
testcom.counterというProgIDのCOMを作ってテストしたときのWSHである。CreateObjectの第2引数でイベント受理用の関数のプリフィクスを指定する。上のCOMは値が変化したときにonchangeというイベントが発生するのだが、上のようなコードを書くとそのイベントが発生したとき、objTest_onchange関数がコールされる。
ただ残念なのは、この方法が使えるのがWSHのみで、html上のJavaScriptでは使えないということだ。
テーマ:JavaScript(ジャバスクリプト) - ジャンル:コンピュータ
|
| ホーム |
SHOJI's Code




