- 每个浏览器中的navigator对象也都有一套自己的属性。下表列出了存在于所有浏览器中的属性和方法,以及支持它们的浏览器版本。
属性或方法 | 说 明 | IE | Firefox | Safari/Chrome | Opera |
---|---|---|---|---|---|
appCodeName | 浏览器的名称。通常都是Mozilla,即使在非Mozilla浏览器中也是如此 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
appMinorVersion | 次版本信息 | 4.0+ | - | - | 9.5+ |
appName | 完整的浏览器名称 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
appVersion | 浏览器的版本。一般不与实际的浏览器版本对应 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
buildID | 浏览器编译版本 | - | 2.0+ | - | - |
cookieEnabled | 表示cookie是否启用 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
cpuClass | 客户端计算机中使用的CPU类型(x86、68K、Alpha、PPC或Other) | 4.0+ | - | - | - |
javaEnabled() | 表示当前浏览器中是否启用了Java | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
language | 浏览器的主语言 | - | 1.0+ | 1.0+ | 7.0+ |
mimeTypes | 在浏览器中注册的MIME类型数组 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
onLine | 表示浏览器是否连接到了因特网 | 4.0+ | 1.0+ | - | 9.5+ |
oscpu | 客户端计算机的操作系统或使用的CPU | - | 1.0+ | - | - |
platform | 浏览器所在的系统平台 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
plugins | 浏览器中安装的插件信息的数组 | 4.0+ | 1.0+ | 1.0+ | 7.0+ |
preference() | 设置用户的首选项 | - | 1.5+ | - | - |
product | 产品名称(如 Gecko) | - | 1.0+ | 1.0+ | - |
productSub | 关于产品的次要信息(如Gecko的版本) | - | 1.0+ | 1.0+ | - |
register-ContentHandler() | 针对特定的MIME类型将一个站点注册为处理程序 | - | 2.0+ | - | - |
register-ProtocolHandler() | 针对特定的协议将一个站点注册为处理程序 | - | 2.0 | - | - |
systemLanguage | 操作系统的语言 | 4.0+ | - | - | - |
userAgent | 浏览器的用户代理字符串 | 3.0+ | 1.0+ | 1.0+ | 7.0+ |
userLanguage | 操作系统的默认语言 | 4.0+ | - | - | 7.0+ |
userProfile | 借以访问用户个人信息的对象 | 4.0+ | - | - | - |
vendor | 浏览器的品牌 | - | 1.0+ | 1.0+ | - |
vendorSub | 有关供应商的次要信息 | - | 1.0+ | 1.0+ | - |
1、检测插件
- 检测浏览器中是否安装了特定的插件。对于非IE浏览器,可以使用plugins数组,该数组中的每一项都包含下列属性。
- name:插件的名字
- description:插件的描述。
- filename:插件的文件名。
- length:插件所处理的MIME 类型数量。
- 在检测插件时,需要循环迭代每个插件并将插件的name与给定的名字进行比较。
- hasPlugin()函数接受一个参数:要检测的插件名
/**检测插件(在IE 中无效),在Firefox、Safari、Opera和Chrome中可以使用这种方法来检测插件。**/
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(hasPlugin("Flash"));
//检测QuickTime
alert(hasPlugin("QuickTime"));
- 在IE 中检测插件的唯一方式就是使用专有的ActiveXObject类型,并尝试创建一个特定插件的实例。
- IE 是以COM对象的方式实现插件的,而COM对象使用唯一标识符来标识。因此,要想检查特定的插件,就必须知道其COM标识符。
//检测IE 中的插件
function hasIEPlugin(name){
try {
new ActiveXObject(name);
return true;
} catch (ex){
return false;
}
}
//检测Flash
alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
//检测QuickTime
alert(hasIEPlugin("QuickTime.QuickTime"));
- 鉴于检测这两种插件的方法差别太大,因此典型的做法是针对每个插件分别创建检测函数,而不是使用前面介绍的通用检测方法。
//检测所有浏览器中的Flash
function hasFlash(){
var result = hasPlugin("Flash");
if (!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
//检测所有浏览器中的QuickTime
function hasQuickTime(){
var result = hasPlugin("QuickTime");
if (!result){
result = hasIEPlugin("QuickTime.QuickTime");
}
return result;
}
//检测Flash
alert(hasFlash());
//检测QuickTime
alert(hasQuickTime());
2、注册处理程序
-
Firefox/Chrome等浏览器为navigator对象新增了registerContentHandler()和registerProtocolHandler()方法。这两个方法可以让一个站点指明它可以处理特定类型的信息。
-
registerContentHandler()方法接收三个参数:要处理的MIME类型、可以处理该MIME类型的页面的URL 以及应用程序的名称。
//将一个站点注册为处理RSS 源的处理程序
navigator.registerContentHandler("application/rss+xml",
"http://www.somereader.com?feed=%s", "Some Reader");
/**第一个参数是RSS 源的MIME 类型。第二个参数是应该接收RSS 源URL 的URL,其中的%s 表示RSS 源URL,由浏览器自动插入,当下一次请求RSS源时,浏览器就会打开指定的URL,而相应的Web 应用程序将以适当方式来处理该请求**/
- registerProtocolHandler()方法,它也接收三个参数:要处理的协议(例如,mailto 或ftp)、处理该协议的页面的URL 和应用程序的名称。
//将一个应用程序注册为默认的邮件客户端
navigator.registerProtocolHandler("mailto",
"http://www.somemailclient.com?cmd=%s", "Some Mail Client");
/**
注册了一个mailto 协议的处理程序,该程序指向一个基于Web 的电子邮件客户端。同样,
第二个参数仍然是处理相应请求的URL,而%s 则表示原始的请求。
**/

网友评论