js创建调用ocx对象的几种方法,检测ocx是否可用

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对象,有些参数设置需要手抖的填写,麻烦,

2、另外可以使用javascript的ActiveXObject对象来创建,一般过程是var act=new ActiveXObject(proid),proid为该ActiveX的标识号,是Classid的另一种表示方法

其中proid指在ocxctrl.cpp文件下的:

 

// 初始化类工厂和 guid

IMPLEMENT_OLECREATE_EX(CtestOCX2Ctrl, "TESTOCX2.testOCX2Ctrl.1",
 0xe0d5a597, 0x336b, 0x4829, 0x84, 0xe0, 0x77, 0x43, 0x91, 0xc8, 0xe8, 0xdb)

 

红色表示部分。

3、

         var _tempPlayer = null;
         _tempPlayer = window.document.createElement("object");
         _tempPlayer.classid = "clsid:358DE739-F39F-4832-9458-80FDE806F845";
         _tempPlayer.id = "realtime_player"+i; // 唯一标识
         _tempPlayer.using = false; // 是否正在使用
         _tempPlayer.style.width = "100%";
         _tempPlayer.style.height = "100%";           

或者:
            /*var _tempPlayer = window.document.createElement("object");
            _tempPlayer.setAttribute("id","realtime_player"+i);
            _tempPlayer.setAttribute("classid","clsid:358DE739-F39F-4832-9458-80FDE806F845");
            _tempPlayer.setAttribute("width","100%");
            _tempPlayer.setAttribute("height","100%");
            _tempPlayer.using = false;  //>是否正在使用 

4、检测ocx是否可用的方法

在js下是 var o = new ActiveXObject(ProgID);
IE下若ocx存在是object,否则是null
即:

var o = new ActiveXObject(ProgID);
if(o)

{

//存在

}

else

{

//不存在

}

 

<HTML>
<HEAD>
<TITLE>New Page</TITLE>

<script language="javascript" type="text/javascript">
    //var a1 = new ActiveXObject("TESTOCX1.testOCX1Ctrl.1");
    var ocx;
    function createOcx() {
        ocx = document.createElement("object");
        ocx.setAttribute("id", "ocx1");
        ocx.setAttribute("height", 100);
        ocx.setAttribute("width", 51);
        ocx.setAttribute("classid", "clsid:DA44C63F-4844-483F-9DA0-7129E1A7F05B");
    }

    function DestoryOcx() {
         delete ocx;
    }

    function AddToDiv() {
        var div = document.getElementById("divOcxContainer");
        div.appendChild(ocx);

        ocx.Method2();
    }

    function RemoveFromDiv() {
        var div = document.getElementById("divOcxContainer");
        var ocx1 = document.getElementById("ocx1");
        div.removeChild(ocx1);
    }

    window.onload = function() {

    }

    window.onunload = function() {

    }

</script>

</HEAD>
<BODY>
<div id="divOcxContainer">
</div>
<input type="button" id="btn1" name="btn1" value="创建ocx" title="创建ocx" onclick="createOcx()"></input>
<input type="button" id="btn2" name="btn2" value="销毁ocx"  title="销毁ocx" onclick="DestoryOcx()"></input>
<input type="button" id="Button1" name="btn2" value="添加到div"  title="添加到div" onclick="AddToDiv()"></input>
<input type="button" id="Button2" name="btn2" value="从div移除"  title="从div移除" onclick="RemoveFromDiv()"></input>
<OBJECT ID="testOCX1" WIDTH=100 HEIGHT=51
 CLASSID="CLSID:DA44C63F-4844-483F-9DA0-7129E1A7F05B">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

<OBJECT ID="testOCX2" WIDTH=100 HEIGHT=51
 CLASSID="CLSID:DA44C63F-4844-483F-9DA0-7129E1A7F05B">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

</BODY>
</HTML>

 

参考html文件代码:http://files.cnblogs.com/lidabo/Page1.rar

时间: 2025-01-28 06:14:26

js创建调用ocx对象的几种方法,检测ocx是否可用的相关文章

JS创建类和对象的两种不同方式_基础知识

在JavaScript中, 当你定义了一个新的函数, 你实际上声明了一个新的类, 而这个函数本身就相当于类的构造函数.下面的代码向你展示了两种不同的方式来创建一个新的Person类, 而Person.prototype的定义也紧跟在函数定义之后. var Person = function(name) { // 一个匿名函数, 并将这个函数赋值给一个Person变量, 此时Person成为一个类 this.name = name; } function Person(name) { // 直接定

js([])引用对象的属性和方法 与大括号({})语法创建无类型对象

文章主要简单举例来说明js([])引用对象的属性和方法 与大括号({})语法创建无类型对象的详细实例教程. 使用方括号([])引用对象的属性和方法范例 <script language="网页特效" type="text/javascript"> <!-- //定义了一个user类,包括两个成员age和sex,并指定了初始值. function user(){  this.age=21;  this.sex="male"; }

实用技巧:PHP中调用Java类的两种方法

Java语言功能强大,因此在许多情况下在php中来调用Java的功能将十分有用.在php中调用Java语言有两种方法,一种是使用php中的Java扩展模块,另一种是使用minij2ee应用服务器提供的SJOP协议实现.下面我们来比较一下这两种方法各自的特点. 1.php的Java模块 php发布版中包含一个Java扩展模块,可以用来调用Java对象,例如: <?php$system=new Java("java.lang.System");print "Java ver

PHP调用java类的两种方法

Java语言功能强大,因此在许多情况下在php中来调用Java的功能将十分有用.在php中调用Java语言有两种方法,一种是使用php中的Java扩展模块,另一种是使用minij2ee应用服务器提供的SJOP协议实现.下面我们来比较一下这两种方法各自的特点.1.php的Java模块php发布版中包含一个Java扩展模块,可以用来调用Java对象,例如:<?php$system=new Java("java.lang.System");print "Java versio

JS遍历页面所有对象属性及实现方法_javascript技巧

for...in循环的Javascript示例: <html> <head> <title>一个使用到for...in循环的Javascript示例</title> </head> <body> <script type="text/javascript"> // 创建一个对象 myObject 以及三个属性 sitename, siteurl, sitecontent. var myObject =

JS 动态加载脚本的4种方法_javascript技巧

如果js文件都比较小,还是一个js好,这样可以减少连接数.下面是4种比较常用的方法,大家可以根据情况选择,最后 将会给推荐一个.1.直接document.write 复制代码 代码如下: <script language="javascript"> document.write("<script src='test.js'><\/script>"); </script> 2.动态改变已有script的src属性 复制代

js实现页面跳转的五种方法推荐_javascript技巧

js实现页面跳转的五种方法推荐 第一种: 复制代码 代码如下: <script language="javascript" type="text/javascript"> window.location.href="xx.jsp?backurl="+window.location.href; </script> 第二种: 复制代码 代码如下: <script language="javascript&quo

在VB中调用CHM 帮助的几种方法

在VB中调用CHM 帮助的几种方法 一个应用程序不论编制得如何完美,在很多情况下用户还是会对如何使用它提出问题. Visual Basic 提供了对两种不同帮助系统的支持:传统的 Windows 帮助系统 (WinHelp)和新的 HTML 帮助(CHM帮助).当我们制作好帮助文件后,就需要在程序的适当位置编写代码进行调用,本文将讨论几种在程序中调用CHM帮助文件的方法. 方法一 使用F1键:这种方法最简单,只需如下代码即可:Private Sub Form_Load() App.HelpFil

js判断url是否有效的两种方法

本篇文章主要是对js判断url是否有效的两种方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法一:(仅适用于ie)    代码如下: function CheckStatus(url)         {             XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")             XMLHTTP.open("HEAD",url,false)             XMLHT