在web中用js调用ocx时有两种方法,第一种,动态调用:
1,用名称调用,var ocx=new ActiveXObject(“JITDSIGN.JITDSignCtrl.1”);
第二种,静态调用:在body中加入object,
<object classid=”clsid:D6D2E2CC-2DB1-4361-AA 7C-3198C6B6F296″ id=”ocx01″ name=”ocx01″ codebase=”WEB-INF/lib/XMPPClient.ocx” width=”32″ height=”32″></object>
然后在js中根据id调用:
var ocx=document.getElementById(“JITDSignOcx”);
当然,这两种方法必须先在系统中注册该ocx控件,注册方法就是把ocx控件复制到system32下,在运行中输入:regsvr32 控件名.ocx,会提示注册成功;
ocx只能在IE浏览器中运行,可以用下面的方法判断是否支持ocx:
//判断登陆类型
if(!window.ActiveXObject){
alert(“对不起,证书登陆请使用IE浏览器!”);
return;
}
加了上面的代码后,如果调用ocx的方法,还是提示”对象不支持此属性或方法”错误,有两种情况,第一,就是ocx本身有问题,但如果已经有人使用,就可以排除是ocx本身的问题,第二,就是引用的js代码有问题,如调用的ocx方法名错误,还有一种情况就是定义<object>时,没有添加参数param,有些ocx控件必须加上参数才能正确调用ocx的方法,浪费了我一天的时间,开始我以为是代码的问题,后来与其他开发人员沟通,发现我的定义里没有param name参数,才导致此错误,我的妈呀~~~
完整的ocx定义:
<object classid=”clsid:06CA9432-D9BD-4867-8475-770B131E1759″ codeBase=”JITDSign.ocx#version=2,0,20,5″ id=”JITDSignOcx” size=”0″ style=”display:none” width=”0″>
<param name=”_Version” value=”65536″ valuetype=”data”/>
<param name=”_ExtentX” value=”2646″ valuetype=”data”/>
<param name=”_ExtentY” value=”1323″ valuetype=”data”/>
<param name=”_StockProps” value=”0″ valuetype=”data”/>
</object>