《javascript高级程序设计》客户端检测学习笔记

一、能力检测(特性检测)

先检测达成目的的最常用的特性。比如想要根据ID提取某元素,先检测document.getElementById(), 再检测document.all[id]。

更可靠的能力监测是检测某个特性是否按照适当方式行事,而非仅仅是是否存在。比如检测某个方法是否存在:

function isHostMethod(object, property) {
     var t = typeof object[property];
     return t == 'function'  ||  (!!(t == 'object' && object[property])) || t == 'unknow';
}

使用示例: isHostMethod(document, "getElementById");  isHostMethod(new String(), "slice"); 第二个参数是字符串。
能力检测不是浏览器检测。

二、怪癖检测

怪癖检测的目标是识别浏览器存在什么缺陷。最好在脚本的一开始就执行此类检测。

三、用户代理检测

用户代理检测通过检测用户代理字符串来确定实际使用的浏览器。在每一次http请求过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过js的navigator.userAgent属性访问。在服务器端,通过检测用户代理字符串来确定用户使用的浏览器是一种常用切广为接受的做法。而在客户端,用户代理检测是万不得已才用的方法,优先级排在特性检测及怪癖检测之后。

确切知道浏览器的名字和版本号不如确切地知道它使用的是什么呈现引擎。




你可能感兴趣的:(《javascript高级程序设计》客户端检测学习笔记)