大家好,我用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的现象出现?
已经被困扰了一下午了,急盼救援

解决方案 »

  1.   

    事件带参数没有测试过,不过ObjectID和Event最好用双引号括起来
    类似于:
    <script language="JavaScript" for="objSS" Event="OnTimer">alert("OnTimer");</script>
      

  2.   

    <object id="MusicX" width=0 height=0 classid="clsid:951307F2-0122-441F-B5F3-514EE91BC781"> </object> 
    <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> 不明白,可以继续问哦!
      

  3.   

    刚才排版出了点小问题:<object id="MusicX" width=0 height=0 classid="clsid:951307F2-0122-441F-B5F3-514EE91BC781"> </object> 
    <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> 不明白,可以继续问哦!
      

  4.   

    <script language="JavaScript1.2" FOR="MusicX" EVENT = "Result" >   
        alert("fuck microsoft");
    </script>1.language="JavaScript1.2" 必须是JavaScript1.2只有这个版本以上才支持控件事件响应
    2.FOR="MusicX"  指明ID 让JavaScript知道这个事件是那个控件的
    3.EVENT = "Result"  指明事件名称 不必带参数 还没有发现能带参数的 所以IE中使用的控件最好直接发出一个事件就好了 不要在事件中再提供参数进去当然 我没有发现并不说名JavaScript更高版本没有提供 楼主可以去查查。
      

  5.   

    <script language="JavaScript1.2" FOR="MusicX" EVENT = "Result" >   
        alert("fuck microsoft");
    </script>
      

  6.   

    感谢楼上几位的支持,已解决,不过遗憾的是并不能用几位方法解决。已经试过,写明javascript=1.2也不能响应连接点事件,最终解决方法是接口继承一个
    public IProvideClassInfo2Impl <&CLSID_MusicX, NULL, &LIBID_MsSuckLib> 然后在映射处加入
    COM_INTERFACE_ENTRY(IProvideClassInfo) 
    COM_INTERFACE_ENTRY(IProvideClassInfo2)这样js才能响应抛出的事件,另外用属性的方法也可解决。