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

  • Post author:
  • Post category:其他


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



版权声明:本文为c_huabo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。