一,检测插件:
随着互联网的发展,html5的标准也成为开发网页的标准,其中比如H5的video标签,就可以直接嵌入到网页成为一个播放器,这就把传统的Flash播放器的功能给取代了。我们在开发不同的项目,可能会依据项目的不同需求,选择使用H5播放器或者Flash插件,这就需要我们在浏览器中识别安装的插件,下面就是一个跨浏览器的插件检测方法:
1,对于非IE浏览器,我们可以直接使用plugins这个数组来遍历插件,下面是数组每一项包含的属性:
name: 插件的名字,
description:插件的描述,
filename:插件的文件名,
length:插件所处理的MIME类型数量
1 //检测浏览器的插件 (非IE) 2 function hasPlugin(name) { 3 name = name.toLowerCase(); //小写 4 for(let i=0;i< navigator.plugins.length;i++){ 5 if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){ 6 return true; 7 } 8 } 9 return false; 10 } 11 console.log(‘flash:‘+ hasPlugin(‘flash‘), ‘QuickTime:‘+ hasPlugin(‘QuickTime‘));
注意:现在很多的浏览器比如Chrome浏览器都是默认不启用Flash插件的,所以即使在浏览器中安装了Flash插件,如果不手动给予使用权限,那么也是照样访问不到的。
2,对于IE插件比较麻烦,因为IE浏览器不支持Netscape式的插件,在IE中检测插件的唯一方式就是使用专有的ActiveXObject类型,IE中每个插件都有一个唯一的标识符,所以代码如下:
1 //IE浏览器的插件检测 2 function hasIEPlugin(name) { 3 try{ 4 new ActiveXObject(name); 5 return true; 6 }catch (ex){ 7 return false 8 ; 9 } 10 }
注意:IE浏览器中默认是使用Flash的,所以不需要手动选择权限。
3,跨浏览器的插件检测,下面就以检测Flash插件为例:
1 //跨浏览器检测插件 2 function hasFlash() { 3 let result = hasPlugin(‘flash‘); 4 if(!result){ 5 result = hasIEPlugin(‘ShockwaveFlash.ShockwaveFlash‘); 6 } 7 return result; 8 }
二,