java 判断ocx是否存在_根据不同浏览器判断OCX插件是否安装

本文介绍了如何在不同的浏览器环境下判断OCX插件是否已安装。通过分析浏览器内核,如AppleWebKit、Trident和Gecko,实现了浏览器类型的识别。在IE下利用ActiveXObject检查插件注册,而在其他浏览器中,由于存在兼容性问题,需找出报错原因并解决。
摘要由CSDN通过智能技术生成

最近项目进入到了验收阶段,需要兼容不同的浏览器,海康的Demo写了一个判断插件是否成功安装的函数,但是经过测试,只在IE浏览器下有效果,在其他的浏览器下面会出现Bug,现在需要写一个通用的方法,在不同的浏览器使用场景下都能判断海康的视频插件是否安装

首先,需要判断用户当前使用的浏览器版本,我在网上找到了一个函数,代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

functiongetExplorerInfo() {var explorer =window.navigator.userAgent.toLowerCase();//ie

if (explorer.indexOf("msie") >= 0) {var ver = explorer.match(/msie ([\d.]+)/)[1];return { type: "IE", version: ver };

}//firefox

else if (explorer.indexOf("firefox") >= 0) {var ver = explorer.match(/firefox\/([\d.]+)/)[1];return { type: "Firefox", version: ver };

}//Chrome

else if (explorer.indexOf("chrome") >= 0) {var ver = explorer.match(/chrome\/([\d.]+)/)[1];return { type: "Chrome", version: ver };

}//Opera

else if (explorer.indexOf("opera") >= 0) {var ver = explorer.match(/opera.([\d.]+)/)[1];return { type: "Opera", version: ver };

}//Safari

else if (explorer.indexOf("Safari") >= 0) {var ver = explorer.match(/version\/([\d.]+)/)[1];return { type: "Safari", version: ver };

}

}

alert("浏览器:" + getExplorerInfo().type + "\n 版本:" + getExplorerInfo().version);

判断浏览器版本

但是在实际的调用中,发现这个函数并不准确,我测试了一下几个不同浏览器返回的window.navigator.userAgent值(即用户当前使用的浏览器型号)

搜狗浏览器

mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/49.0.2623.221 safari/537.36 se 2.x metasr 1.0

Chrome浏览器

mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.104 safari/537.36 core/1.53.3538.400

QQ浏览器

mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/53.0.2785.104 safari/537.36 core/1.53.3538.400

IE浏览器

mozilla/5.0 (windows nt 10.0; wow64; trident/7.0; .net4.0c; .net4.0e; .net clr 2.0.50727; .net clr 3.0.30729; .net clr 3.5.30729; rv:11.0) like gecko

火狐浏览器

mozilla/5.0 (windows nt 10.0; win64; x64; rv:56.0) gecko/20100101 firefox/56.0

可以看到,区分各个浏览器版本的主要是他们的内核,现在主流的浏览器的内核有四种,Trident,Gecko,Webkit ,Presto,我把方法改了一下,根据内核来判断不同的浏览器,代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 functiongetExplorer() {2 //获取当前使用的浏览器的型号

3 var explorer =window.navigator.userAgent.toLowerCase() ;4 if (explorer.indexOf("applewebkit") >= 0) {5 alert("applewebkit内核浏览器");6 }7 else if (explorer.indexOf("trident") >= 0) {8 alert("IE浏览器");9 }10 else if (explorer.indexOf("gecko") >= 0) {11 alert("gecko内核浏览器");12 }13 }

改进版

分辨出不同的浏览器之后,下面开始写判断是否安装OCX插件的方法,在IE环境下,用海康自带的方法,其他的浏览器用来判断OCX插件是否注册

首先在搜索框内输入regedit,打开注册表

5014614d7ffc4c26fa9f17ee77dab071.png

找到对应OCX插件的名字,复制插件名字

8f0614dd7024ebc830e9cf0eb80c49ff.png

以我本机为例,代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

varNewObj;try{

NewObj= new ActiveXObject("WebVideoKitActiveX.WebVideoKitActiveXCtrl.1");if (typeof(NewObj) != 'undefined') {//NewObj = null;

alert("已经注册");

}

}catch(e) {//NewObj = null;

alert("尚未注册");

}

判断插件是否安装

运行,发现还是只是在IE上可以用这个方法判断海康插件是否安装成功,其他浏览器还不能判断,按F12,找到报错的地方,try{}catch{},代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

try{

WebVideoCtrl.I_InitPlugin(b.videowidth,b.videoheight, {

iWndowType: sziWndowType,

cbSelWnd:function(xmlDoc) {

g_iWndIndex= $(xmlDoc).find("SelectWnd").eq(0).text();

}

});

WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin");

}catch(err) {

alert("没有注册");

}finally{

}

抛出异常

问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值