目标:用JavaScript 脚本代码调用COM控件,实现基本功能操作:
1.定义及初始化COM控件;
2.调用COM接口;
3.注册COM事件并实现事件调用。
1. 定义及初始化COM控件
在HTML页面定义一个object标签来加载COM控件:
1) classid:是COM控件的编号,用来唯一识别一个COM控件;
2) id:是JavaScript调用COM控件时访问的对象,它是全局对象,此处将全局对象命名为ocx;
3) codebase:是打包COM的cab包资源路径。可以在后面加上#version=1,0,0,1来发布cab实现自动更新下载。
<object classid="clsid:D4CCE975-3B00-417A-A520-B265FBFEB178" id="ocx" codebase="CarPlayCtrl.cab" standby="控件加载中..."></object>
[用户还可以定义其它相关属性]
用浏览器(IE内核)打开页面后就可以加载COM控件。
2. 调用COM按口和属性
2.1 调用方法
在创建COM标签时定义了一个全局对象ocx。所以之后在JavaScript代码中调用控件接口显示非常容易,类似后Java中表态访问的调用,如调用创建播放器方法:
COM接口:
LONG CreatePlayer(LONG flag,ULONG decTag, BSTR streamerName, LONG playerIndex)
Javascript调用COM接口:
var rtn = ocx.CreatePlayer(0, ”decTag”, ”guanhuistreamer”, -1);
if(rtn <0){
//TODO
}
CreatePlayer需要JavaScript传递4个参数进去(这里只涉及整形和字符串类型),并返回一个数字类型的值作为判断标志。
2.2 调用属性
调用属性和方法一样,只是不用再传递参数给COM,如获取播放器画面数量的属性:
var screenNums = ocx.screenNum;
当然,也可以设置属性的值,如,设置播放器画面数量:
ocx.screenNum = 4;
3. 注册COM事件并实现函数回调
我们可以调用的COM的方法和属性来实现对COM的访问和设置。
但这样还不够,因为我们不能总是主动去调用COM的方法或属性来获取数据。比如要获取COM当前的状态(状态是不断改变的)我们就要用譬如轮询(如:window.setInterval())这样的方式不断去访问接口,这样既费时又浪费系统资源。
所以,如果COM有一个通知事件,我们就可以将JavaScript函数注册到COM事件中,当COM执行后调用该事件时就可以间接调用JavaScript函数来实现回调。这样JavaScript就可以轻松的被动接收数据。
以下是播放器窗口焦点变化时通知JavaScript做出的相关响应的一系列实现过程:
a) ActiveScreenChanged(LONG playerIndex):是COM中的通知事件,在注册时不用带参数。
b) regOcxActiveScreen():是JavaScript中的注册事件;
c) listener_ActiveScreen(playerIndex):是JavaScript中的回调函数,在注册时不用带参数。
1) 定义JavaScript注册事件:
function regOcxActiveScreen() {
var focus = document.getElementById("ocx");
if ($.browser.msie) {
//IE内核浏览器的注册方式
focus.attachEvent("ActiveScreenChanged",listener_ActiveScreen);
} else {
//非IE内核浏览器注册方式
//当然这里其实没有必要,因为只有IE内核浏览器才能执行此处讨论的COM组件
focus.addEventListener("ActiveScreenChanged",listener_ActiveScreen);
}
}
[也可以直接使用:ocx.attachEvent("ActiveScreenChanged",listener_ActiveScreen);来注册就可以了,因为之前已经定义了ocx,此处只是再取一个别名。]
2) 定义JavaScript回调函数:
function listener_ActiveScreen(playerIndex) {
$('#currentWin').html('播放窗口:' + playerIndex);
//TODO
}
还有一种调用方式是直接在页面中通过script标签来实现的,如:
<script language="JavaScript" for="ocx" event="ocxMethod(parm)">
alert(parm);
//TODO
</script>
这种方法个人不太喜欢,代码结构完整性比较差。
分享到:
相关推荐
Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等
JavaScript 日期时间控件是一种在Web应用程序中用于用户交互式选择日期和时间的组件。它通常以日历或时钟的图形用户界面呈现,提供了一种直观且易于使用的交互方式,使得用户能够方便地输入或选择日期和时间值。在这...
HTML的`<select>`元素的`multiple`属性可以启用多选,但JavaScript操作多选项时需遍历所有选项来检查其`selected`状态。 综上所述,C#和JavaScript都提供了丰富的功能来操作ListBox控件,满足不同场景的需求。在...
JavaScript经典日期控件,如标题所述,是一种基于JavaScript编写的用于网页交互的日期选择组件,它使得用户在网页上能够方便地选取日期。这个控件的版本为My97DatePicker3.0.1,通常这类控件会提供丰富的功能和良好...
在IT领域,尤其是在网页开发中,视觉数据呈现是至关重要的,而"Flash和JavaScript统计图控件"就提供了这样的功能。这两个技术都是用于创建交互式和动态用户体验的强大工具。 首先,让我们来了解一下**Flash**。...
在网页设计中,JavaScript控件是不可或缺的一部分,它们为用户提供了丰富的交互体验。以下是一些基于JavaScript的经典控件及其相关的知识点: 1. **表格操作**: - `javascript 表格操作.html` 和 `操控表格.txt` ...
JavaScript树形控件是一种在网页中用于展示层次结构数据的交互式组件,它通常以节点的形式呈现,每个节点可以展开或折叠,展示其子节点。这种控件在各种应用场景中非常常见,例如文件目录浏览、组织结构展示、菜单...
JavaScript控件是网页开发中常用的一种元素,它们用于增强用户界面的交互性和功能。JavaScript是一种轻量级的脚本语言,常被嵌入HTML页面中,以实现动态内容的生成和用户交互。在这个主题中,我们将深入探讨...
1. DOM操作:JavaScript树形控件的基础是通过DOM(Document Object Model)来动态构建和操作页面元素。当用户点击节点时,JavaScript会修改DOM结构,展开或折叠相应的子节点。 2. 数据结构:树形控件的数据通常以...
`checkBoxDemo`这个文件名可能指的是一个包含示例代码或测试用例的压缩包,通常它会包括一个HTML文件、一个C#代码-behind文件以及相关的JavaScript文件,用来演示如何在C#和JavaScript中操作`CheckBox`控件。...
时间控件的实现可能基于HTML、CSS和JavaScript,通过DOM操作来动态更新页面元素,以显示和处理时间选择。 "java源代码"标签可能意味着这个时间控件包含Java语言的后端部分,用于处理与前端JavaScript控件的交互,...
3. **事件处理**:JavaScript控件需要响应用户的操作,如点击、输入等。基类会提供事件处理的基础设施,如`addEventListener()`,并且可能会有一个`handleEvent()`方法来进行事件分发和处理。 4. **数据绑定**:在...
在本主题中,我们关注的是"javascript 经典tab控件",这是一种常见的网页组件,用于组织和展示多块内容,让用户能够通过点击不同的标签来切换显示的内容。这种控件在许多网站和应用程序中都有应用,如设置页面、产品...
总的来说,JS日期控件涉及了JavaScript的基础知识,如对象、事件、DOM操作,以及一些高级特性,如国际化和性能优化。理解并掌握这些知识点,能帮助开发者构建出功能完备、用户体验优秀的日期选择功能。
这种控件通过CSS(层叠样式表)和JavaScript来实现,使得用户界面既美观又易于操作。在本案例中,描述提到的控件设计为适应生日选择,但其灵活性意味着稍加修改就能适应其他时间相关的应用场景。 首先,我们来看看...
在给定的文件中,我们看到了一个通过JavaScript技术实现按钮添加控件的示例。这段代码展示了一个网页应用,其中包含一个按钮,当点击该按钮时,会动态地在页面上添加一个新的输入文本框(控件)以及一个删除链接。这...
FullCalendar不仅仅是一个日历控件,它是一个功能强大的事件日历库,支持日、周、月视图,还支持拖放操作、事件资源管理以及与外部数据源的集成。其API允许开发者自定义各种样式和行为,如: ```javascript ...
总的来说,这两个滑动杆控件提供了网页中动态选择值的手段,通过JavaScript和HTML的结合,为用户提供直观且互动性强的操作方式。无论是基础的SliderBlock还是具有特定功能和配色的form_widget_amount_slider,都是...
日历控件通常通过JavaScript实现,因为这可以避免服务器端的额外负担,并允许用户实时操作。 2. **日历样式**: - 提供的6个文件(日历1.html到日历5.html)可能展示了不同的日历展示方式,包括但不限于经典的...
开发者可以通过研究这些代码来学习如何运用JavaScript实现选项卡控件,包括如何定义事件监听器,如何操作DOM元素来显示或隐藏内容,以及如何添加和控制动画效果。这些实例通常包括HTML结构、CSS样式以及JavaScript...