《JS高程(3)》BOM-03(navigation)-第8章笔记(08)

识别客户端浏览器的事实标准,是所有支持JavaScript的浏览器所共有的。

属性或方法说明
appCodeName浏览器名称。通常是Mozilla
appName完整的浏览器名称
appMinorVersion次版本信息
appVersion浏览器的版本。一般不与实际的浏览器版本对应
buildID浏览器编译版本
cookieEnabled表示cookie是否启用
cpuClass客户端计算机中使用的CPU类型(x86,68K,Alpha,PPC或Other)
javaEnabled()表示当前浏览器中是否启用Java
language浏览器的住语言
mimeTypes在浏览器中注册的MIME类型数组
onLine表示浏览器是否连接到了因特网
Platform浏览器所在的系统平台
plugins浏览器中安装的插件信息的数组
userAgent浏览器的用户代理字符串

检测插件

检测浏览器中是否安装了特定的插件。
方法:plugins[i];
每个数组中的包含的属性

键名键值
name:插件的名字
description:插件的描述
filename:插件的文件名
length:插件所处理的MIME类型数量

Firefox ,Safari,Opera和Chrome使用:

function hasPlugin(name){
    //转换为小写
    name = name.toLowerCase();
    for(var i = 0; i<navigator.plugins.length; i++){
    // 迭代plugins数组,通过indexof()检测每个name属性
    if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1){
            return true;
        }
    }
    return false;
}
//检测Flash
alert(hasPlugin("Flash"));// true

//检测QuickTime
alert(hasPlugin("QuickTime"));//false

IE中使用:

function hasIEPlugin(name){
    // 在try-catch中实例化,因创建未知COM对象会抛出错误。
    try{
        new ActiveXObject(name);
        return true;
    } catch (ex){
        return false;
    }
}
//检测Flash
alert(hasPlugin("ShockwaveFlash.ShockwaveFlash"));// true

//检测QuickTime
alert(hasPlugin("QuickTime.QuickTime"));//false

在IE中检测插件的唯一方式就是使用专有的ActiveXObject类型,并创建特定插件的实例。以COM对象的方式实现插件,而COM对象使用唯一标识符来标识。因此要检查特定的插件,就必须知道其COM标识符。Flash的标识符是ShockwaveFlash.ShockwaveFlash。

两种方法合并使用,使用判断所有类型的浏览器是否安装了特定插件:

// 检测所有浏览器中的Flash
function hasFlash()
    var result = hasPlugin("Flash");
    //先判断在非IE浏览器,返回false的话再使用IE插件检测方法,若继续返回false,则不存在。
    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);// true

//检测QuickTime
alert(hasQuickTime);//false
注册处理程序

注册处理程序就为像使用桌面应用程序一样默认使用这些在线应用程序提供了一种方式。
指明一个站点可以处理特定类型的信息:
registerContentHandler()方法:接受3个参数:要处理的MIME类型,可以处理该MIME类型的页面的URL以及应用程序的名称。
讲一个站点注册为处理RSS(简单信息聚合,个人认为是根据个人要求定制的信息整合推送服务)源的处理程序:

navigator.registerContentHandler(
    //RSS源的MIME类型
     "application/rss+xml",
     //接收RSS源URLURL。%s表示RSS源URL,下一次请求RSS源时,浏览器就会打开指定的URL而相应的Web应用程序将以适当方式来处理该请求。
     "http://www.somereader.com?feed=%s", 
     //应用程序的名称。
     "Some Reader");

registerProtocolHandler()方法:接受3个参数:要处理的协议,处理该协议的页面的URL以及应用程序的名称。

navigator.registerProtocolHandler(
    "mailto",
    "http://www.somemailclient.com?cmd=%s", 
    "Some Mail Client"
);

注册了一个mailto协议的处理程序,改程序指向一个基于Web的电子邮件客户端。第二个参数仍然是处理相应请求的URL,而%s则表示原始的请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值