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());