JAVASCRIPT重载ACTIVEX事件的几种方式

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<OBJECT classid="CLSID:DDC564B5-9337-430D-B441-CA3AE84C961E" id="temp" name="temp"  ></OBJECT>
<script language="JavaScript">
 //
    function Start()
    {
          temp.add(10,10);
    }
  function showResult(x)
    {
          alert(x);
    }
</script>
<input type="button" value="click" οnclick="Start()">
</BODY>
</HTML>

1、通过VBSCRIPT与连接点建立连接,并通过VBSCRIPT重载ACTIVEX中的EVENT事件进行调用;(现在JAVASCRIPT是脚本主流,这种方式会造成代码可读性差,所以不建议使用;)

 <!--
 //vbScript 通过连接点调用
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
 Sub temp_result(y)    //temp为OBJECT对象名称 result为ATL/ocx的连接点事件名称;
  call  showResult(y) 
 End Sub
</SCRIPT>
 -->

2、通过javascript第一种方式重载连接点事件,建立连接;

  <!--
//javascript 通过连接点调用 for对应OBJECT,event对应事件接口
 <script language="JavaScript" for="temp" event="result(s)">
   alert("AddResult(" + s + ")");
 </script>
 -->

3、通过javascript第二种方式重载连接点事件,建立连接;

   temp.attachEvent("result", showReult); 

4、通过javascript第三种方式 重载连接点事件,建立连接; ( ATL控件中需使用IDispatchEx定义相应的接口)

function callback(i) 

  WScript.echo(i); 

var obj = new ActiveXObject("ygsoft.CallBack"); 
 obj.SetCallBack(callback)   //注该方法是在ATL控件对象中增加的属性或方法,使javascript方法与vc接口指针建立连接

var para = {"111":"111value","222":"222value"}; 
obj.Test1(para)//测试C++解析json对象   

注: 在ACTIVEX控件中需要继承该接口IProvideClassInfo2Impl否则事件重载不会生效,在使用VS2010建立的ATL项目时,默认是不继承该类的,按向导生成的类也不会包含该类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值