項目中用到了一個第三方的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
入手研究。小程序
class identifier(類標識符)也稱爲CLASSID或CLSID,是與某一個類對象相聯繫的惟一標記(UUID)。一個準備建立多個對象的類對象應將其CLSID註冊到系統註冊數據庫的任務表中,以使客戶可以定位並裝載與該對象有關的可執行代碼。hexo
以上摘自百度百科,能夠看到clsid
跟uuid
是相似的原理,用來進行插件的惟一標識。ide
在MDN
上搜索ActiveXObject
詞條,能夠看到這麼一句:測試
您能夠在
HKEY_CLASSES_ROOT
註冊註冊表項中識別主機PC上的servername.typename的
值。ui
哦,能夠看到是從註冊表中去查的。因而我運行regedit
打開註冊表查看,雖然知道是在HKEY_CLASSES_ROOT
目錄下,可是這也太多了吧,怎麼找獲得?this
固然仍是要靠搜索功能,因而我根據clsid
的值27E1A157-6A29-48AE-86C2-14591D90B4D4
進行查找
搜索時間有點長,可是最終仍是查到了,位置以下:
計算機\HKEY_CLASSES_ROOT\SDS_CMSCtrl.SDS_CMSCtrlCtrl.1
因而我猜測,servername
應該就是SDS_CMSCtrl.SDS_CMSCtrlCtrl.1
。經測試,果不其然。檢查代碼以下:
try { const ocx = new ActiveXObject('SDS_CMSCtrl.SDS_CMSCtrlCtrl.1') console.log(ocx) } catch (error) { this.$alert('您還未安裝視頻插件!', '提示') }
這樣一來,若是用戶沒有安裝插件,立刻可以獲得提示,perfect!
掃一掃下方小程序碼或搜索Tusi博客
,即刻閱讀最新文章!