JS 检测浏览器中是否安装了特定的插件

Posted ~泊水~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 检测浏览器中是否安装了特定的插件相关的知识,希望对你有一定的参考价值。

1、检测非IE浏览器

  可以使用plugins数组来达到这个目的,例:

 1  //检测插件(在IE中无效)
 2     function hasPlugin(name){
 3         name = name.toLowerCase();
 4         for(var i=0;i<navigator.plugins.length;i++)
 5         {
 6             if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1)
 7             {
 8                 return true;
 9             }
10         }
11         return false;
12     }
13     //检测Flash
14     alert(hasPlugin("Flash"));

 

2、检测IE浏览器

  因为IE不支持Netscape式的插件。在IE中检测插件唯一的方式就是使用专有的ActiveXObject类型,并尝试创建一个特定插件的实例。IE是以COM对象的方式使用插件的,而COM对象使用唯一标识符来标识。因此,要检查特定的插件就必须知道其特定的标识符。如Flash的标识符是ShockwaveFlash.ShockwaveFlash。

 1 //检测IE中的插件
 2     function hasIEPlugin(name)
 3     {
 4         //用try-catch进行实例化,因为创建未知的COM对象会导致抛出错误,如果实例化成功返回true,否则抛出异常返回false
 5         try {
 6             new ActiveXObject(name);
 7             return true;
 8         } catch (ex) {
 9             return false;
10         }
11     }
12     //根据Flash标识符,检测Flash插件
13     alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));

 

3、检测所有浏览器

  先使用不针对IE的检测插件的方法,再使用针对IE的检测插件的方法,只要任何一个方法检测到将会返回true,否则返回false。

 1 //检测所有浏览器中的Flash
 2     function hasFlash()
 3     {
 4         var result = hasPlugin("Flash");//先检测非IE浏览器
 5         if(!result)
 6         {
 7             result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");//再检测IE
 8         }
 9         return result;
10     }
11     //检测Flash
12     alert(hasFlash());

 

以上是关于JS 检测浏览器中是否安装了特定的插件的主要内容,如果未能解决你的问题,请参考以下文章

JS之浏览器安装插件检测

Feature.js-轻量级浏览器特性检测JavaScript库插件

原生JS检测浏览器安装的插件

网页代码 JS代码 检测手机或是Pad设备 是不是安装某软件 之后做相应的跳转

js——navigator,screen,history对象(BOM 3)

Grails 检测是不是安装了插件