使用javascript操作ActiveX组件
2007-11-06 18:34 cppguy 阅读(5774) 评论(0) 编辑 收藏 举报公司来了新项目,是一家美国保险集团的ERP,让我负责开发一个输出报表的模块。之前还没有用过javascript来实现这么复杂的业务。
ActiveX插件以前也叫OLE控件或OCX空间,是微软公司剔除的一组使用COM可以插入WEB或其他应用程序并可与用于进行交互的技术集。该技术与具体的变成语言无关,用户可无需知道其具体的实现过程,只要了解他的作用和所具有的方法,属性,就可以很好的应用这些组件,使之成为自己应用程序的一部分。
1:创建ActiveX对象
在web中使用ActiveX组件有两种方法,一是如下
<HTML>
<HEAD>
<TITLE>rep_print_medcan.CAB</TITLE>
</HEAD>
<BODY>
<HEAD>
<TITLE>rep_print_medcan.CAB</TITLE>
</HEAD>
<BODY>
<OBJECT ID="Rep_Print_MedCan21"
CLASSID="CLSID:C0558D51-6AFD-11D5-BF5C-005070024001"
CODEBASE="rep_print_medcan.CAB#version=1,0,0,25">
</OBJECT>
</BODY>
</HTML>
CLASSID="CLSID:C0558D51-6AFD-11D5-BF5C-005070024001"
CODEBASE="rep_print_medcan.CAB#version=1,0,0,25">
</OBJECT>
</BODY>
</HTML>
OBJECT标签中,通过ID指点了对象的ID号,javascript可以使用该ID号来引用该对象,而classid用于标识这个组件,每个ActiveX组件都有唯一一个用于表示他的ID号。而codebase指定的程序下载到本地(在系统目录的“Downloaded Program Files”子目录下),然后调用组件程序的自注册入口函数注册到当前系统中,以后的创建都在本地进行,不再涉及codebase属性
使用以上的方法来创建ActiveX对象,有些参数设置需要手抖的填写,麻烦,另外可以使用javascript的ActiveXObject对象来创建,一般过程是var act=new ActiveXObject(proid),proid为该ActiveX的标识号,是Classid的另一种表示方法
2:操作ActiveX对象
function Window_OnLoad(){
with(Rep_Print_FSADat){
with(Rep_Print_FSADat){
.QU_value=""
.QU_RA=""
.QU_specialty=""
..
..
}
其实创建过程中无论使用什么方式,只要在创建时制定了该对象的ID或者名称,那么就可以在网页脚本中使用javascript来引用和操作对象了。一般过程为:首先使用document对象的getElementById方法或者all属性或者其他方法来获取所创建的AcitiveX,然后再调用该对象的属性和方法来修改对该对象或者完成某项操作,这里使用了with关键字,可以批量的对象的属性和方法进行调用。
而在加载控件的时候,大部分的信息应该从服务器端得到,为了弥补这一缺陷,我们可以在javascript代码中嵌入vb脚本来弥补,
function Window_OnLoad(){
onerror = errproc;
f = document.Frm_Main;
with(parent.hid.document.frmHID.Rep_Print_FSADat){
onerror = errproc;
f = document.Frm_Main;
with(parent.hid.document.frmHID.Rep_Print_FSADat){
<%
lngiCnt = DataCnt
Do Until RsDT.EOF
AGcode = RsDT("AGcode")
AGcode = RsDT("AGcode")
QU_value=""
'Start--- [U6024-0003] 修正 2007/02/01 BND 楊
'QU_RA=""
QU_specialty=""
QU_application=""
QU_university=""
QU_TLC=""
QU_study=""
'QU_ISWL=""
'Start--- [U6024-0003] 修正 2007/02/01 BND 楊
'QU_RA=""
QU_specialty=""
QU_application=""
QU_university=""
QU_TLC=""
QU_study=""
'QU_ISWL=""
%>