天天看點

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都注釋了,果然讀出來了,看來是我一開始解決問題的思路不對,出發點就錯了,看來經驗還需要慢慢的積累,請多多指教