`
javawangzilong
  • 浏览: 55407 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

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都注释了,果然读出来了,看来是我一开始解决问题的思路不对,出发点就错了,看来经验还需要慢慢的积累,请多多指教











0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics