这两天接触到了一些硬件设备与软件之间的交互。
主要是用到了神思二代身份证读卡机器,让它能把身份证的信息显示到页面中。
按照提供的接口来写,主要是用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都注释了,果然读出来了,看来是我一开始解决问题的思路不对,出发点就错了,看来经验还需要慢慢的积累,请多多指教
分享到:
相关推荐
- `*.html`: HTML页面,包含JavaScript调用OCX控件的代码。 - `*.ocx`: 自定义开发的OCX控件文件。 - `readme.txt`: 可能包含运行和配置的指南。 通过深入研究这些文件,开发者可以学习如何在Java和JavaScript环境...
总的来说,JS调用OCX控件并响应回调是一项涉及浏览器、JavaScript、ActiveX和C++编程的技术,主要用于实现Web与本地系统的深度交互。虽然现代Web开发倾向于使用更安全的Web API和框架,但在一些遗留系统中,这种技术...
在某些情况下,可能需要在VBA(Visual Basic for Applications)或VBScript中调用OCX控件。这通常发生在ActiveX控件被嵌入到Office文档或其他支持VBA的应用程序中。例如: ``` Dim ctrl As Object Set ctrl = ...
火狐浏览器调用OCX控件是一个常见的技术需求,特别是在需要与特定硬件设备(如身份证阅读器)交互的Web应用程序中。在32位操作系统环境下,这个过程涉及到多个技术层面,包括浏览器插件、ActiveX技术和COM...
在JavaScript中,通常使用`document.getElementById('控件ID').method()`的方式来调用OCX控件的方法。这里的'控件ID'是OCX控件在网页中的标识,而'method'则是要执行的具体接口函数。 首先,我们需要确保用户在访问...
vs2010开发activex(MFC)控件/ie插件(一),测试ocx控件加载 vs2010开发activex(MFC)控件/ie插件(二),js传参数 vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
总的来说,通过HTML调用OCX控件是一种扩展Web应用功能的方法,尽管现代Web开发更倾向于使用Web API和JavaScript框架,但这种技术在一些特定场景下仍然有其价值。了解和掌握这种技术对于理解和维护旧系统的开发者来说...
在实际应用中,Web调用OCX控件需要注意安全性问题,因为这可能导致跨站脚本攻击(XSS)或远程代码执行等风险。因此,现代Web开发倾向于使用更安全的Web标准,如HTML5提供的各种API,而非依赖于浏览器插件或特定平台...
JS 调用 OCX 控件需要知道 OCX 控件的 ClassID 号,可以在 OCX 控件工程中的.idl 文件中查找 OCX 控件的 ClassId,或者在注册表中查找该控件的 ClassID 值。使用 JS 测试 OCX 控件可以使用以下代码: ```html <!...
以下是一个关于如何在Chrome中调用OCX控件的完整解决方案: 一、了解问题背景 Chrome本身并不支持直接调用ActiveX控件,因为它是基于Chromium引擎构建的,而Chromium对ActiveX的支持有限。但有一些工作流或应用...
4. **JavaScript调用OCX**:在WebBrowser控件加载完成后,可以通过JavaScript代码访问OCX控件的方法和属性。例如,`document.getElementById('webBrowser1').document.all['yourOcxControl'].yourMethod()`。 5. **...
本文将详细讲解如何在Chrome浏览器中调用OCX控件,以及安装相关插件来实现与身份证阅读器的交互。 首先,我们需要了解Chrome浏览器对ActiveX(包括OCX)的支持情况。由于安全性和沙箱机制的原因,Chrome原生不支持...
U800ocx.html 调用ocx控件的html文件 U800ocx - firefox.html 支持firefox的调用ocx控件的html文件 TypeLibraryExplorer.rar ocx文件查看器 FFOCX.zip 让FireFox支持OCX插件的安装包
【标题】"简单的Web调用OCX控件"涉及到的核心技术是将ActiveX(OCX)控件嵌入到Web页面中,以便于在浏览器环境中实现特定的功能或交互。这通常在早期的Web开发中常见,尤其是在Windows平台下,因为ActiveX是微软推出...
编写了ocx控件之后。regsvr32注册之后。在注册表里获得该对象...然后再JavaScript下就可以调用了。具体代码参考程序。 比如说ocx控件里面有connection()方法。通过ocx控件的id来引用。即ocx的id.connection()来引用
在“ie浏览器 js调用 ocx 异步打印pdf、图片控件”的场景中,我们将探讨如何利用JavaScript调用OCX控件来实现异步打印功能,特别是针对PDF和图片文件。 首先,我们需要在Web服务器上部署这个OCX控件。部署过程包括...
6. **第三方库**:有些第三方库如CefSharp提供了在.NET环境中嵌入Chromium浏览器,它允许在C#或VB.NET中直接调用OCX控件。 7. **ActiveX Shim**:开发一个ActiveX Shim,这是一个小型的ActiveX控件,它的作用是作为...
为了在Chrome中调用OCX控件,我们可以采取以下几种方法: 1. 使用Chrome插件:开发者可以编写Chrome插件,利用NPAPI(Netscape Plugin Application Programming Interface)或PPAPI(Pepper Plugin API)来实现与...
在本例中,"javascript调用ocx控件实现加载进度条"意味着开发者已经创建了一个OCX(OLE Control Extension)控件,这是一个基于COM(Component Object Model)的二进制组件,专门用于在网页上显示和管理进度条。...
总结,JS调用OCX涉及到注册控件、在HTML中引入、JavaScript调用、参数传递、返回值处理以及解决兼容性和安全问题。尽管这种方法有一定的局限性,但在某些特定场景下,如与本地硬件设备交互,还是有一定的应用价值。