项目中用到了一个第三方的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博客
,即刻阅读最新文章!