大家好,我用Atl做了一个最最简单的com,其中只有一个带连接点的接口,提供一个Add(int a, int b)的方法,在其事件接口中提供一个Result的方法,在Add中Fire_Result(a + b),现在的问题是,js可以顺利的调用Add,但Fire的时候js始终响应不到这个事件,JS相关代码如下:<object id="MusicX" width=0 height=0 classid="clsid:951307F2-0122-441F-B5F3-514EE91BC781"></object>
<script language=JScript>
function Play()
{
MusicX.Add(3, 5);
}
</script>
<script language=JScript for=MusicX event=Result(b)>
alert("fuck microsoft");
</script>请诸如高手帮我看看,可能哪些问题会造成这个BT的现象出现?
已经被困扰了一下午了,急盼救援
<script language=JScript>
function Play()
{
MusicX.Add(3, 5);
}
</script>
<script language=JScript for=MusicX event=Result(b)>
alert("fuck microsoft");
</script>请诸如高手帮我看看,可能哪些问题会造成这个BT的现象出现?
已经被困扰了一下午了,急盼救援
类似于:
<script language="JavaScript" for="objSS" Event="OnTimer">alert("OnTimer");</script>
<script language="javascript" for="MusicX" event="Result(num1,num2)"> //类似与sink接收器,直观上说是和事件接口中Result方法进行配对。 HandleResult(num1,num2);
</script><script language="javascript" type="text/javascript">
function Play()
{
MusicX.Add(3, 5); //触发Fire,之后实质调用的是HandleResult(3, 5);
} function HandleResult(num1,num2)
{
var reVal = num1 + num2;
this.alert(reVal);
}
</script> 不明白,可以继续问哦!
<script language="javascript" for="MusicX" event="Result(num1,num2)"> //类似与sink接收器,直观上说是和事件接口中Result方法进行配对。
HandleResult(num1,num2);
</script> <script language="javascript" type="text/javascript">
function Play()
{
MusicX.Add(3, 5); //触发Fire,之后实质调用的是HandleResult(3, 5);
} function HandleResult(num1,num2)
{
var reVal = num1 + num2;
this.alert(reVal);
}
</script> 不明白,可以继续问哦!
alert("fuck microsoft");
</script>1.language="JavaScript1.2" 必须是JavaScript1.2只有这个版本以上才支持控件事件响应
2.FOR="MusicX" 指明ID 让JavaScript知道这个事件是那个控件的
3.EVENT = "Result" 指明事件名称 不必带参数 还没有发现能带参数的 所以IE中使用的控件最好直接发出一个事件就好了 不要在事件中再提供参数进去当然 我没有发现并不说名JavaScript更高版本没有提供 楼主可以去查查。
alert("fuck microsoft");
</script>
public IProvideClassInfo2Impl <&CLSID_MusicX, NULL, &LIBID_MsSuckLib> 然后在映射处加入
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)这样js才能响应抛出的事件,另外用属性的方法也可解决。