每个浏览器中的navigator对象都有一套自己的属性
1. 检测插件
- 对于非IE浏览器,可使用plugins数组来达成目的。数组中的每一项都包含下列属性
- name:插件名
- description:插件描述
- filename:插件的文件名
- length:插件说出你的MIME类型数量
function hasPlugin(name) {
name = name.toLowerCase(); //将传入的参数name转换为小写
for (var i = 0; i < navigator.plugins.length; i++) {
//通过indexOf检测传入的名称是否出现在字符串的某个地方
if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1 ) {
return true;
}
}
return false;
}
//检测Flash
console.log(hasPlugin("Flash"));
- 对于IE浏览器,检测插件唯一方式是使用专有的
ActiveXObject
类型。参数为COM标识符
function hasIEPlugin(name) {
try {
new ActiveXObject(name);
return true;
} catch (ex) {
return false;
}
}
//检测Flash
console.log(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
由于两种插件的方法差别太大,故典型做法是针对每个插件分别创建检测函数
function hasFlash(){
var result = hasPlugin("Flash");
if (!result) {
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
2.注册处理程序
Firefox2为navigator对象新增了registerContentHandler()
和registerProtocolHandler()
两个方法。
registerContentHandler()
参数
- 要处理的MIME类型
- 可以处理该MIME类型的页面的URL
- 应用程序的名称
registerProtocolHandler()
参数
- 要处理的协议 (mailto或ftp等)
- 处理该协议的页面的URL
- 应用程序的名称