javascrip for 语句访问Idispatch 对应的过程是什么
我在javascript 中想用 FOR 语句循环找到 activex 公布出来的 DISPATCH 接口数据
从 javascript 中传入 对象数组的过程如下:
var oParams=new Object();
oParams["LoginName"]="test";
oParams["Password"]="123";
oParams["VerifyCode"]="12PQ";
TestActiveX.SendMsg("test",oParams);
activex 中定义的方法如下:
[id(7)] long SendMsg(BSTR TYPE, VARIANT Name);
long CInfoTCtrl::SendMsg(LPCTSTR TYPE, const VARIANT FAR& Name)
现在需要ACTIVEX 公开一个事件:
[id(1)] void RecvMsg(BSTR TYPE, VARIANT* Name);
void FireRecvMsg(LPCTSTR TYPE, VARIANT FAR* Name)
{FireEvent(eventidRecvMsg,EVENT_PARAM(VTS_BSTR VTS_PVARIANT ), TYPE, Name);}
然后在JAVASCRIPT 中接收:
<script language="JavaScript1.2" for="TestActiveX" event="RecvMsg(sTYPE,Msg)">
var ocx=sTYPE;
alert("sTYPE : "+ocx) ;
for(prop in Msg)
{
alert("event :"+prop+"="+Msg[prop]);
}
如果我直接在 ACTIVEX 中sendmsg 中调用 FireRecvMsg 是可以成功的,JAVASCRIP 这边也可以正常接收到,
但是现在的问题是我需要在ACTIVEX 的其他函数中实现 调用FireRecvMsg 的功能,但是当JAVASCRIPT 运行到
for(prop in Msg)
这一行的时候报错“对象不支持此属性和方法”
根据上一贴
http://topic.csdn.net/u/20080418/12/3c09eb2c-fbb4-419f-8a6e-50d78ba8ff2d.html
蒋老大的指示,我的对象继承了 IdispatchEx 的所有接口方法,但是似乎JAVASCRIPT 就没有调用我实现的方法,现在有些迷惑,到底JAVASCRIP 解析 for 语句的时候做了一些什么动作呢,这个过程是怎么样的?
恳求蒋老大给指点一下,各路神仙有知道的也给支个招,
多谢!!!!