navigator对象及其应用

1.navigator对象的属性:
navigator.appCodeName // 浏览器名称 大多都是Mozilla
navigator.appName // 完整的浏览器名称
navigator.appVersion // 浏览器版本,一般不与实际的浏览器版本对应
navigator.cookieEnabled // 表示cookie是否启用
navigator.cpuClass // 客户端计算机使用的CPU类型
navigator.javaEnabled() // 表示当前浏览器中是否启用了java
navigator.language // 浏览器的主语言
navigator.systemLanguage // 操作系统的语言
navigator.userLanguage // 操作系统的默认语言
navigator.mimeTypes // 在浏览器中注册的MIME类型的数组
navigator.onLine // 浏览器是否链接到了因特网
navigator.platform // 浏览器所在的系统平台
navigator.plugins // 浏览器中安装的插件信息的数组
navigator.product // 产品名称(如Gecko)
navigator.productSub // 关于产品的次要信息(如Gecko的版本)
navigator.vendor // 浏览器的品牌
navigator.vendorSub // 有关供应商的次要信息
navigator.registerProtocolHandler() // 针对特定的协议,将一个站点注册为处理程序
navigator.userAgent // 浏览器的用户代理字符串
// 上述属性通常用于检测显示网页的浏览器类型
2.应用
2.1.在非IE浏览器下检测插件(利用navigator.plugins数组进行检测)
navigator.plugins数组有如下属性:
这里写图片描述
name:插件名称 description:插件的描述 filename:插件的文件名 length:插件所处理的MIME类型数量
一般来说,用name进行检测插件

// 不支持IE
function hasPlugin(name) {
    name = name.toLowerCase();
    var pluginsArray = navigator.plugins;
    for (var i = 0, pluginLength = pluginsArray.length; i < pluginLength; i++) {
        if (pluginsArray[i].name.toLowerCase().indexOf(name) > -1) {
        return true;
        }
    }
    return false;
}
hasPlugin("Flash");

2.2.在IE下检测插件:
检测IE中的插件比较麻烦,因为IE不支持Natscape式的插件。在IE中检测插件的唯一方式就是使用专有的ActiveXObject类型,并尝试创建一个特定插件的实例。IES是以COM对象的方式实现插件的,而COM对象使用唯一标识符来标识。因此,要想检查特定的插件,就必须知道其COM标识符。例如,Flash的标识符是ShockwaveFlash.ShockwaveFlash。知道唯一标识符后,就可以编写类似下面的函数来检测IE中是否安装相应的插件了。

// 检测IE中的插件
function hasIEPlugin(name) {
    try {
        new ActiveXObject(name);
        return true;
    } catch(e) {
        return false;
    }
}

扩展:
MIME类型:多功能网际邮件扩充协议
在HTTP中,MIME类型被定义在Content-Type header,
MIME意为多目Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。 每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
插件中的MIME
每个插件对象本身也是一个MimeType对象的数组,这些对象可以通过方括号语法来访问。每个MimeType对象有4个属性:包含MIME类型描述的description、回指插件对象的enabledPlugin、表示与MIME类型对应的文件扩展名的字符串suffixes(以逗号分隔)和表示完整MIME类型字符串的type
2.3.针对每个插件分别做检测函数(兼容IE和其他浏览器)
以检测Flash插件为例:

function hasFlash() {
    var resultFlag = hasPlugin("Flash");
    if (!resultFlag) {
        resultFlag = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
    }
    return resultFlag;
}

3.navigator.plugins.refresh方法
navigator.plugins.refresh():用于刷新最新安装插件plugins的集合
navigator.plugins.refresh(true):更新插件集合,以及重新加载包含插件集合的所有页面

猜你喜欢

转载自blog.csdn.net/xujiezi/article/details/51141927
今日推荐