js 高程学习总结 第九章

客户端检测

能力检测

基本模式如下

if(object.propertyInQuestion){
    //使用object.propertyInQuestion
}

可以一次性检验相关属性
//确定浏览器是否支持
var hasNSPlugins = !!(navigator.plugins && navigator.plugins.length);
//确定浏览器是否具有dom1级规定的能力
var hasDOM1 = !!(document.getElementById && document.createElement && document.getElementsByTagName);

怪癖检测

识别浏览器的特殊行为

用户代理检测

用户代理字符串检测技术
识别呈现引擎

var client = fucntion(){
    var engine = {

    //呈现引擎
    ie: 0,
    gecko: 0,
    webkit: 0,
    khtml: 0,
    opera: 0,

    //具体的版本号
    ver: null
    }
    var browser = {
        //浏览器
        ie: 0,
        firefox: 0,
        safari: 0,
        konq: 0,
        opera: 0,       
        chrome: 0,

        //具体的版本号
        ver: null   
    }

    //在此检测呈现引擎、平台和设别
    return {
        engine: engine,
        browser:browser
    }
}

主要检测五大呈现引擎:IE、Gecko、WebKit、KHTML和Opera;正确的识别呈现引擎,检测顺序要正确;
第一步识别Opera,它的用户代理字符串有可能完全模仿其他浏览器,
第二步检测的是WebKit。因为WebKit用户代理包含“Gecko”和“KTHML”两个字符串,先检查他们很可能得到错误的结论,不过WebKit 中的“AppleWebKit”是独一无二的
第三步要测试的时KHTML,因为KHTML的用户代理字符串也包含“Gecko”,
第四步要检测Gecko,Gecko的版本号不会出现在字符串“Gecko”的后面,而会出现在字符串“rv:”的后面
第五步要检测呈现引擎的时IE

var ua = navigator.userAgent;
if(window.opera){
    engine.ver = window.opera.version();
    engine.opera = parseFloat(engine.ver);
}else if(/AppleWebKit\/(\S+)/.test(ua)){
    engine.ver = RegExp["$1"];
    engine.webkit = parseFloat(engine.ver);
}else if(/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){
    engine.ver = RegExp["$1"];
    engine.khtml = parseFloat(engine.ver);
}else if(/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){
    engine.ver = RegExp["$1"];
    engine.gecko = parseFloat(engine.ver);
}else if(/MSIE([^;]+)/.test(ua)){
    engine.ver = RegExp["$1"];
    engine.ie = parseFloat(engine.ver);
}

识别浏览器
识别平台
识别windows操作系统
识别移动设备
识别游戏系统

检测的时候,我们要优先采用能力检测和怪癖检测,用户代理检测时客户端检测的最后选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值