JavaScript高级程序设计-第三版(客户端检测)

九、客户端检测

  • 背景
    • 各浏览器间的差异造成部分功能不一致的表现
    • 针对不同浏览器的类型,定制不同的方式实现功能

9.1 能力检测

       识别浏览器能力

  • 先检测达成目的的最常用的特性
  • 必须测试实际要用到的特性,而不是根据某一特性推断另一特性是否存在

9.1.1 更可靠的能力检测

  • 如果想要检测浏览器是否具有某项功能,不是测试浏览器是否具有某个名称的属性,而是测试该名称的属性是否是函数类型
function isHostMethod(object,property){
	var t=typeof object[property];
	return t=='function' || (!!(t=='object' && object[property]))||t=='unknown';
}

9.1.2 能力检测,不是浏览器检测

9.2 怪癖检测

       识别浏览器缺陷

9.3 用户代理检测

       通过检测用户代理字符串确定实际使用的浏览器

  • 客户端 navigator.userAgent
  • 服务端 http的请求头

9.3.1 用户代理字符串的历史

  • 用户代理字符串本应作为应用程序(浏览器)的标识
  • 但新出现的浏览器为了挤占市场,提高用户数量,伪装成市场占有量高的浏览器
    • 网站开发者对市场占有量高的浏览器有较好的支持

9.3.2 用户代理字符串检测技术

9.3.2.1 识别呈现引擎
  • IE
  • Gecko
           Firefox浏览器
  • WebKit
           Safari、Chrome浏览器,不同的javascript引擎,WebKit是KHTML的一个分支独立
  • KHTML
           Linux的Konqueror浏览器
  • Opera
           Opera浏览器
9.3.2.2 识别浏览器
9.3.2.3 识别平台
  • Windows
  • Mac
  • Unix
9.3.2.4 识别Windows操作系统
9.3.2.5 识别移动设备
9.3.2.6 识别游戏系统

       任天堂等游戏系统上的web浏览器

9.3.3 完整的代码

9.3.4 使用方法

  • 用户代理检测是客户端检测的最后一个选择
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值