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

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

檢查原理

建立ActiveXObject對象去檢查ocx控件html

let newObj = new ActiveXObject(servername, typename[, location]) 
複製代碼

參數問題

看起來很簡單的,可是用起來我懵逼了,應用程序對象名稱servername這個參數怎麼填呢?java

插件供應商只提供了控件安裝包,示例程序,clsid數據庫

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

因而我想應該能夠從clsid入手研究。小程序

什麼是clsid

class identifier(類標識符)也稱爲CLASSID或CLSID,是與某一個類對象相聯繫的惟一標記(UUID)。一個準備建立多個對象的類對象應將其CLSID註冊到系統註冊數據庫的任務表中,以使客戶可以定位並裝載與該對象有關的可執行代碼。hexo

以上摘自百度百科,能夠看到clsiduuid是相似的原理,用來進行插件的惟一標識。ide

根據clsid怎麼查到servername

MDN上搜索ActiveXObject詞條,能夠看到這麼一句:測試

您能夠在HKEY_CLASSES_ROOT註冊註冊表項中識別主機PC上的servername.typename的值。ui

哦,能夠看到是從註冊表中去查的。因而我運行regedit打開註冊表查看,雖然知道是在HKEY_CLASSES_ROOT目錄下,可是這也太多了吧,怎麼找獲得?this

註冊表HKEY_CLASSES_ROOT

固然仍是要靠搜索功能,因而我根據clsid的值27E1A157-6A29-48AE-86C2-14591D90B4D4進行查找

搜索clsid

搜索時間有點長,可是最終仍是查到了,位置以下:

計算機\HKEY_CLASSES_ROOT\SDS_CMSCtrl.SDS_CMSCtrlCtrl.1

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!

ocx未安裝的友好提示


首發連接


掃一掃下方小程序碼或搜索Tusi博客,即刻閱讀最新文章!

Tusi博客
相關文章
相關標籤/搜索