如何判断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目录下,但是这也太多了吧,怎么找得到?

当然还是要靠搜索功能,于是我根据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博客,即刻阅读最新文章!

如何判断IE OCX插件正常安装?的更多相关文章
- 根据不同浏览器判断OCX插件是否安装
最近项目进入到了验收阶段,需要兼容不同的浏览器,海康的Demo写了一个判断插件是否成功安装的函数,但是经过测试,只在IE浏览器下有效果,在其他的浏览器下面会出现Bug,现在需要写一个通用的方法,在不同 ...
- Web获取客户端物理MAC地址(ocx插件)
主要是通过ActiveX控件 从本地获取到MAC地址,传入到浏览器打开的网页中,再提交到服务器. 具体详解与步骤看文档中: 文件实例包下载 DotNetFX 文件夹附件文件:(可能安装时需用) dot ...
- Web获取客户端物理MAC地址(ocx插件)ActiveX控件
主要是通过ActiveX控件 从本地获取到MAC地址,传入到浏览器打开的网页中,再提交到服务器. 具体详解与步骤看文档中: 文件实例包下载 DotNetFX 文件夹附件文件:(可能安装时需用) dot ...
- javascript检测ActiveX插件是否安装/启用
本文主要提供在IE浏览器下检测ActiveX插件安装/启用的状态. 在一些应用开发中,需要用到一些第三方提供的ActiveX插件,如Flash插件. 为了在未安装插件的浏览器显示友好的提示,需要用到主 ...
- Kindle PaperWhite3 越狱和PDF插件的安装
下载所需工具 这里分享的文件是这个教程中所需要的所有文件 所有工具下载链接:http://pan.baidu.com/s/1c249P2S 密码:ozc7 一.准备工作 本越狱方法仅适用于 KO.KV ...
- chrome 浏览器调用 ocx 插件
原文:http://blog.csdn.net/wangchao1988ok/article/details/45193489 IE 上使用 ocx 插件网上已经有很多资料说明,这里就不重复了,那如何 ...
- js判断本机是否已安装app
需求:在浏览器或者app webview中打开的页面,js判断本机是否已安装搜狐新闻客户端. 一.微信 1.分享——好友/朋友圈,feed会有搜狐新闻标记,打开url后缀参数isappinstalle ...
- Sublime Text3下的markdown插件的安装及配置
Sublime Text3下的markdown插件的安装及配置 安装准备--安装Package Control 安装MarkdownEditing 安装Markdown Preview或OmniMar ...
- [moka同学收藏]Vim升华之树形目录插件NERDTree安装图解
无意中看到实验室的朋友使用的vim竟然能在左边显示树形目录,感觉很方便,这样子文件夹有什么文件一目了然.她说是一个插件叫NERDTree,安装执行后的效果如下,不是你想要的效果就别安了.我的系统是Ub ...
随机推荐
- 洛谷P2085——最小函数值
题目描述 有n个函数,分别为\(F_1,F_2,...,F_n\).定义\(F_i(x)=A_i*x^2+B_i*x+C_i (x∈N*)\).给定这些\(A_i.B_i和C_i\),请求出所有函数的 ...
- Linux基础命令小技巧
总结 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise L ...
- C#语法--委托,架构的血液
委托的定义 什么是委托? 委托实际上是一种类型,是一种引用类型. 微软用delegate关键字来声明委托,delegate与int,string,double等关键字一样.都是声明用的. 下面先看下声 ...
- js3——表格下拉
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- CSRF的原理与防御 | 你想不想来一次CSRF攻击?
CSRF是Cross Site Request Forgery的缩写,中文翻译过来是跨站请求伪造.这个漏洞往往能给用户带来巨大的损失,CSRF在等保安全检测中,也是一个非常重要的检测项.但是在我们的网 ...
- Python列表中的字典按照该字典下的键值进行排序
列表中的字典按照该字典下的键值进行排序 这算是排序中比较复杂的一种情况吧,多重嵌套,按照某种规则进行排序.如下面这个json(注:这里这是该列表中的一个项): [ { "stat" ...
- luogu P2783 有机化学之神偶尔会做作弊 |Tarjan+LCA
题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 有一天他一边搓炉石一边监考,而你作为一个信息竞赛的大神也来凑热闹. 然而你的化竞基友却向你求助了. "第1354题怎么做"&l ...
- js练习- 给你一个对象,求有几层
// 比如这个a中,就有四层.如何算出这四层 const a = { b: 1, c() {}, d: { e: 2, f: { g: 3, h: { i: 4, }, }, j: { k: 5, } ...
- [TimLinux] 理解selinux
1. 概念 SELinux有三种工作模式:Enforcing, Permissive, disabled.Enforcing对应又有几种修饰(targeted, minimum, mls). 2. 解 ...
- nginx学习(一):安装nginx
学习下nginx,本篇文章主要讲解下在linux下安装nginx 下载nginx 安装包 1.去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本: 2.上传tar包到li ...