标签:style blog http color io 使用 ar java for
浏览器之间的差异和浏览器的“怪癖(quirk)”太多,因此客户端检测除了是一种补救措施外还是有效的开发策略。
万不得已就不要使用客户端检测。先设计最通用的方案,然后使用特定于浏览器的技术增强该方案。
能力检测的目的不是识别特定的浏览器,而是识别浏览器的能力。
基本模式:
if (object.propertyInQuestion) {
//使用object.propertyInQuestion
}
先检测打成目的的最常用的特性,必须测试实际要用到的特性。
检测sort是不是一个函数。
function isSortable(object){
return typeof object.sort == "function";
}
在IE8及之前版本,typeof document.createElement 返回的是"object";不适用typeof属性访问ActiveX对象会出错。
程序需要用某个特定的浏览器特性应该一次性检测所有特性。
//浏览器是否支持Netscapte风格的插件 var hasNSPlugins = !!(navigator.plugins && navigator.plugins.length); //浏览器是否具备DOM1级所规定的能力 var hasDOM1 = !!(document.getElementById && document.createElement && document.getElementsByTagName);
目的是识别浏览器的特殊行为。
IE8之前,如果某个实力属性与[[Enumerable]]标记为false的某个原型属性同名,该属性将不会出现在for-in循环。
Safari 3以前版本会枚举被隐藏的属性。
通过测试用户代理字符串来确定实际使用的浏览器。在每一次HTTP请求中,用户代理字符串是作为相应首部发送的,该字符串可以通过navigator.userAgent属性访问。
在服务器端这是常用而广为接受的做法,在客户端这被认为是万不得已的做法,其优先级在能力检测和怪癖检测之后。
五大呈现引擎:IE、Webkit、KHTML和Opera。
1.不能直接准确地使用能力检测或怪癖检测。例如:某些浏览器实现了为将来功能预留的存根(stub)函数。这种情况下,仅测试相应的函数是否存在还得不到足够的信息。
2.同一款浏览器在不同平台下具有不同的能力。这时可能要确定浏览器位于哪个平台。
3.为了跟踪分析等目的需要知道确切的浏览器。
标签:style blog http color io 使用 ar java for
原文地址:http://www.cnblogs.com/surahe/p/4004644.html