如何判断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博客

相关文章
相关标签/搜索