代码改变世界

使用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>
<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>
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){
    
  .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){
 
<%
 
 lngiCnt = DataCnt
 Do Until RsDT.EOF
  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=""
                 %>