检测浏览器中是否安装了特定的插件,对于非IE的浏览器,可以使用plugins数组检测浏览器安装插件的情况:
plugins属性:
- name:插件的名称
- description:插件的描述
- filename:插件的文件名
- length:插件所处理的MIME类型数量
使用plugins检测浏览器插件时,需要循环迭代plugins在中的每一个插件并将插件的name与给定的名称比较
//检测非IE浏览器中的插件 function hasPlugin(name){ name = name.toLowerCase(); for(var i=0; i<navigator.plugins.length; i++){ if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){ return true; } } return false; }
//检测flash
alert(hasPlug("flash"));
检测IE中的插件就比较麻烦了,因为IE不支持Netscape式的插件,因此检测IE中的插件只能使用ActiveXObject类型,IE是以COM对象的方式实现插件的,而COM对象使用唯一标识符来标识,因此要检测IE中的插件就必须知道其COM标识符。
//检测IE中的插件 function hasPlugin(name){ try{ new ActiveXObject(name); return true; }catch(ex){ return false; } } //检测flash,flash的标识符:ShockwaveFlash.ShockwaveFlash alert(hasPlug("ShockwaveFlash.ShockwaveFlash"));
要检测所有的浏览器中的插件,将以上两个方法整合就可以了。