关于js调用ocx控件报错"对象不支持此属性或方法"的解决方法

在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>

猜你喜欢

转载自blog.csdn.net/c_huabo/article/details/46652303