com控件是什么,

  com控件是什么,

  目的:用JavaScript脚本代码调用COM控件实现基本功能操作:

  1.定义和初始化COM控件;

  2.调用COM接口;

  3.注册COM事件并实现事件调用。

  1.定义和初始化COM控件

  在HTML页中定义一个对象标记以加载COM控件:

  1) classid:是一个COM控件的编号,用来唯一标识一个COM控件;

  2) id:是JavaScript调用COM控件时访问的对象,是一个全局对象。这里,全局对象被命名为ocx;

  3) codebase:是打包COM的cab包的资源路径。可以添加#version=1,0,0,1发布cab,实现自动更新下载。Jquery一起,17 jquery

  Jquery一起,17 jquery

   id= ocx codebase= carplay ctrl . cab stand by= control loading . /对象的内容来自17jquery。

  [用户还可以定义其他相关属性]

  来自17jquery的内容

  用浏览器(IE内核)打开页面后,就可以加载COM控件了。

  2.调用COM press端口和属性

  2.1调用方法

  创建COM标签时定义了一个全局对象ocx。所以之后在JavaScript代码中调用控制界面显示是非常容易的,类似于post-Java中语句访问的调用,比如调用create player方法:

  COM:内容来自17jquery

  Long create player (long flag,ulong dectag,bstr streamer name,LONG playerIndex)来自17jquery。

  Jquery一起,17 jquery

  调用Javascript COM接口:

  Jquery一起,17 jquery

  var rtn=ocx。CreatePlayer(0," decTag "," guanhuistreamer ",-1);

  如果(rtn 0){

  //TODO

  } jQuery一起,17 jQuery

  Jquery一起,17 jquery

  Jquery一起,17 jquery

  CreatePlayer要求JavaScript传入四个参数(这里只涉及shaping和string类型),并返回一个数值作为判断标志。

  17jquery.com

  2.2调用属性

  调用属性和方法是一样的,只不过不用给COM传递参数,比如获取播放器屏幕数的属性:内容来自17jquery。

  var screenNums=ocx.screenNum17jquery.com

  Jquery一起,17 jquery

  当然,你也可以设置属性的值,例如,设置播放器屏幕的数量:

  来自17jquery的内容

  ocx . screen num=4;来自17jquery的内容

  Jquery一起,17 jquery

  3.注册COM事件并实现函数回调

  我们可以调用COM的方法和属性来访问和设置COM。

  但这还不够,因为我们不能总是调用COM方法或属性来获取数据。比如要获取COM的当前状态(状态是不断变化的),就要通过轮询的方式访问接口(比如window.setInterval()),浪费时间和系统资源。

  所以如果COM有通知事件,我们可以在COM事件中注册JavaScript函数,在COM执行后调用事件时间接调用JavaScript函数实现回调。这样,JavaScript可以很容易地被动接收数据。

  以下是播放器窗口焦点发生变化时通知JavaScript相关响应的一系列实现过程:

  a)ActiveScreenChanged(Long Player Index):是COM中的通知事件,注册时不需要带参数。

  B) regOcxActiveScreen():是JavaScript中的注册事件;

  c)Listener _ active screen(player index):是JavaScript中的回调函数,注册时不需要带参数。

  1)定义JavaScript注册事件:内容来自17jquery。

  函数regOcxActiveScreen() {

  var focus=document . getelementbyid( ocx );

  if ($.browser.msie) {

  //IE内核浏览器注册方法

  focus . attach event( active screen changed ,listener _ active screen);

  }否则{

  //非IE内核浏览器注册方法

  //当然这里不是必须的,因为只有IE内核浏览器才能执行这里讨论的COM组件。

  focus . addevent listener( active screen changed ,listener _ active screen);

  来自17jquery的内容

  来自17jquery的内容

  【也可以直接使用:ocx . attach event( active screen changed ,listener _ active screen);注册就好,因为ocx之前已经定义过了,这里只是另一个别名。]

  2)定义JavaScript回调函数:

  来自17jquery的内容

  函数listener _ active screen(player index){

  $(#currentWin )。html( player index: player index );

  //TODO

  }来自17jquery的内容

  17jquery.com

  17jquery.com

  还有一种方法是通过页面中的script标签直接调用,比如:

  来自17jquery的内容

  脚本语言= JavaScript for= ocx event= ocx method(parm)

  警报(参数);

  //TODO

  /脚本内容来自17jquery

  我个人不喜欢这种方式,代码结构完整性差。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: