天天看点

js调用ocx控件的问题

这两天接触到了一些硬件设备与软件之间的交互。

主要是用到了神思二代身份证读卡机器,让它能把身份证的信息显示到页面中。

按照提供的接口来写,主要是用js来调用ocx的控件来读取身份证,ic卡的内容,但是经过了两天的调试才成功,下面把我遇到的一些问题说明一下,给自己一个提醒,也希望能帮到大家。

1,刚开始用拿到的只是一些ocx控件,还有一个批处理文件,这个批处理文件主要是将一些用到的ocx,dll文件拷贝到C:盘的Windows/System32目录下,因为我的操作系统是64位的,所以运行这个批处理文件可能会有问题,只能重新找台机器。

2,找了一台32位XP系统的机器,并且将ocx文件拷贝到Windows/System32目录下,(可能是因为在批处理文件中已经注册了这些ocx文件,所以我没有注册这些ocx文件)

3,下面就进入到html页面去写js调用ocx控件代码,html的代码如下:

<object classid="clsid:{XXXXXXXX-XXXX-XXXXXX-XXXX-XXXXXXXX}" codebase="" id="idCardReader" style="display:none" width="0" height="0"></object>

这里面classid是通过查看注册表的到的(可以百度一下怎么查注册表ocx控件)

js的代码如下:

function readIDCard(){

var reader=$("idCardReader");

//alert(reader);

reader.DoRead(); //控件的卡中的信息

//alert(reader.IDName);

if(reader.IDName!="" && reader.IDName!=null) {

if(form1.userName.value==""){

form1.userName.value=reader.IDName;

form1.credentialCode.value=reader.IDCode; form1.currentAddress.value=reader.IDAddress;

}else{

if(form1.userName.value=reader.IDName&&reader.IDName!=""){ form1.userName.value=reader.IDName; form1.credentialCode.value=reader.IDCode; form1.currentAddress.value=reader.IDAddress;

}}}}

但是无论如何调用该方法,总是提示“对象不支持此属性或方法”。

在网上搜了许多资料,可能出现的原因如下

(1)有可能是浏览器的问题,可能因为浏览器的安全级别过高,不允许未签名的控件下载或运行(这个在浏览器的工具-->Internet选项-->安全 里面的级别设置一下就行)

(2)可能是当前页面中引入的js发生冲突以至于js调用控件的方法未识别。

我就是因为js冲突这个原因导致身份证读卡机一直读卡失败,开始一直以为是硬件设施的问题,可能是因为我把项目搭在了64位操作系统上,导致读卡失败,但是后来想了一下,我用的是32位XP系统去访问服务器的,就算是使用了控件,在我的本机上也已经注册过了,应该不会有问题,之后我将调用控件的html页面引入的所有js都注释了,果然读出来了,看来是我一开始解决问题的思路不对,出发点就错了,看来经验还需要慢慢的积累,请多多指教