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());
原文地址:https://www.cnblogs.com/lijianda/p/7095624.html