美文网首页前端基础笔记
【javascript】BOM——navigator 对象

【javascript】BOM——navigator 对象

作者: shanruopeng | 来源:发表于2017-11-23 17:23 被阅读4次
  • 每个浏览器中的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 则表示原始的请求。
**/
好好学习

相关文章

网友评论

    本文标题:【javascript】BOM——navigator 对象

    本文链接:https://www.haomeiwen.com/subject/ghzzvxtx.html