9.1 能力检测
能力检测(又称特性检测)的目标不是识别特定的浏览器,而是识别浏览器的能力。
function getElement(id){
if(document.getElementById){
return document.getElementById(id);
}else if(document.all){
return document.all[id];
}else{
throw new Error("No way to retrieve element!");
}
}
1、先检测达成目的的最常用的特性,在多数情况下都可以避免测试多个条件。
2、测试实际用到的特性。
9.1.1 更可靠的能力检测
能力检测对于想知道某个特性是否会按照适当方式行事(而不仅仅是某个特性存在)非常有用。
//不要这样做,只检测了是否存在对象成员,!是取反,!!是取反再取反
function isSortable(object){
return !!object.sort;
}
//这样更好:检查sort是不是函数
function isSortable(object){
return typeof object.sort == "function";
}
9.1.2 能力检测,不是浏览器检测
略
9.2 怪癖检测
怪癖检测是想要知道浏览器存在什么缺陷(bug)。这通常需要运行一小段代码,以确定某一特性不能正常工作。
略
9.3 用户代理检测
其优先级排在能力检测和(或)怪癖检测之后。
略