1,介绍
- navigator对象是所有支持JavaScript的浏览器所共有的。
- 每个浏览器中的navigator对象都有一套自己的属性。下表列出了存在于所有浏览器中的属性和方法,以及支持他们的浏览器版本。
2,检测插件
对于非IE浏览器,可以使用plugins数组来达到这个目的
- plugins数组中每一项都包含下列属性
- name:插件的名字。
- descrition:插件的描述。
- filename:插件的文件名。
- length:插件所处理的MIME类型数量。
可用如下代码进行检测插件
function hasPlugin(name){ name =name.toLowerCase(); for (var=0; i<navigator.plugins.length;i++){ if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1){ return true } } return false; } // 检测Flash alert(hasPlugin("Flash"); // 检测QuickTime alert(hasPlugin("QuickTime"));
- plugins数组中每一项都包含下列属性
对于IE中检测插件
- 因为IE不支持Netscape式的插件。在IE中检测插件的唯一方式就是使用专有的ActiveXobject类型,并尝试创建一个特定插件的实例。
- IE是以COM对象的方式实现插件的,而COM对象使用唯一标识符来标识。因此要想检查特定的插件,必须知道其COM标识符
在IE中检测插件的代码
function hasIEPlugin(name){ try{ new ActiveXobject(name); return true; } catch(ex){ return false; } } // 检测Flash alert(hasIEPlugin("ShockwaveFlash"); // 检测QuickTime alert(hasPlugin("QuickTime.QuickTime ");
通用综合检测方法
- 代码实例
function hasFlash(){ var result = hasPlugin("Flash"); if(!result){ result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash"); } return result;
3,注册处理程序
- Firefox 2为navigator对象新增了registerContentHandler()和registerProtocolHandler()方法,这两个方法是在HTML5中定义的。这两个犯法可以让一个站点指名它可以处理特定类型的信息。随着RSS阅读器和在线电子邮箱程序的兴起注册处理程序就为像使用桌面应用程序一样默认使用这些在线应用程序提供了一种方式。
registerContentHandler()
- 参数
- 要处理的MIE类型,
- 可以处理该MIME类型的页面的URL。
- 应用程序的名称。
- 代码示例
navigator.registerContentHandler("application/rss+xml","http://www.somereader.com?feed=%s","Some Reader");
- 参数
registerProtocolHandler()
- 参数
- 要处理的协议
- 处理该协议的页面的URL
- 应用程序的名称
- 代码示例
navigator.registerProtocolHandler("mailto","htp://www.somemailclient.com?cmd=%s","Som Mail Client");
- 参数