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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。