天天看點

如何判斷IE OCX插件正常安裝?

項目中用到了一個第三方的ie ocx控件,而經常遇到客戶和測試小夥伴回報相關功能無法正常使用,也沒有友好提示。考慮到這個問題,必須要有一個ie ocx控件的檢查機制。

項目中用到了一個第三方的

ie ocx

控件,而經常遇到客戶和測試小夥伴回報相關功能無法正常使用,也沒有友好提示。考慮到這個問題,必須要有一個

ie ocx

控件的檢查機制。

檢查原理

建立

ActiveXObject

對象去檢查

ocx

控件

let newObj = new ActiveXObject(servername, typename[, location]) 
           

參數問題

看起來很簡單的,但是用起來我懵逼了,應用程式對象名稱

servername

這個參數怎麼填呢?

插件供應商隻提供了控件安裝包,示例程式,

clsid

<object id="NetVideo" classid="clsid:27E1A157-6A29-48AE-86C2-14591D90B4D4"></object>
           

于是我想應該可以從

clsid

入手研究。

什麼是clsid

class identifier(類辨別符)也稱為CLASSID或CLSID,是與某一個類對象相聯系的唯一标記(UUID)。一個準備建立多個對象的類對象應将其CLSID注冊到系統注冊資料庫的任務表中,以使客戶能夠定位并裝載與該對象有關的可執行代碼。

以上摘自百度百科,可以看到

clsid

uuid

是類似的原理,用來進行插件的唯一辨別。

根據clsid怎麼查到servername

MDN

上搜尋

ActiveXObject

詞條,可以看到這麼一句:

您可以在

HKEY_CLASSES_ROOT

注冊系統資料庫項中識别主機PC上的

servername.typename的

值。

哦,可以看到是從系統資料庫中去查的。于是我運作

regedit

打開系統資料庫檢視,雖然知道是在

HKEY_CLASSES_ROOT

目錄下,但是這也太多了吧,怎麼找得到?

如何判斷IE OCX插件正常安裝?

當然還是要靠搜尋功能,于是我根據

clsid

的值

27E1A157-6A29-48AE-86C2-14591D90B4D4

進行查找

如何判斷IE OCX插件正常安裝?

搜尋時間有點長,但是最終還是查到了,位置如下:

計算機\HKEY_CLASSES_ROOT\SDS_CMSCtrl.SDS_CMSCtrlCtrl.1

如何判斷IE OCX插件正常安裝?

于是我猜想,

servername

應該就是

SDS_CMSCtrl.SDS_CMSCtrlCtrl.1

。經測試,果不其然。檢查代碼如下:

try {
  const ocx = new ActiveXObject('SDS_CMSCtrl.SDS_CMSCtrlCtrl.1')
  console.log(ocx)
} catch (error) {
  this.$alert('您還未安裝視訊插件!', '提示')
}
           

這樣一來,如果使用者沒有安裝插件,馬上能夠得到提示,perfect!

如何判斷IE OCX插件正常安裝?

首發連結

掃一掃下方小程式碼或搜尋

Tusi部落格

,即刻閱讀最新文章!

如何判斷IE OCX插件正常安裝?