客户端检测
能力检测
基本模式如下
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操作系统
识别移动设备
识别游戏系统
检测的时候,我们要优先采用能力检测和怪癖检测,用户代理检测时客户端检测的最后选择