在理想状态下,我们会认为浏览器应该支持一组最常用的公共功能,但是现实时浏览器之间有存在差异以及特的“怪癖”(quirk)。因此客户端检测除了是一种补救措施之外,更是一种行之有效的开发策略。
主要有以下三种客户端检测方法
1.能力检测
在编写代码之前先检测特定的浏览器的能力。例如,脚本在调用某个函数之前,可能线检测该函数是否存在。这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让它们把注意力集中到相应的能力是否存在上。能力检测无法精确地检测特定的浏览器和版本
2.怪癖检测
怪癖检测是想要知道浏览器存在什么缺陷,也就是bug!!!例如早期的WebKit中就存在一个怪癖,即它会在for-in循环中返回被隐藏的属性。怪癖检测通常涉及到运行运行一小段代码,然后确定浏览器是否存在某个怪癖。由于怪癖检测与能力检测相比效率更低,因此应该只在某个怪癖会干扰脚本运行的情况下使用。怪癖检测无法精确地检测特定的浏览器和版本
3.用户代理检测
通过检测用户代理字符串来识别浏览器。用户代理字符串中包含大量与浏览器有关的信息,包括浏览器、平台、操作系统及浏览器版本。
用户代理字符串有过一段相当长的发展历史,在此期间,浏览器提供商试图通过在用户代理字符串中添加一些欺骗性信息,欺骗网站相信自己的浏览器是另外一种浏览器。
在决定使用哪种客户端检测方法时,一般应优先考虑使用能力检测。怪癖检测是确定应该如何处理代码的第二选择。而用户代理检测则是客户端检测的最后一种方案,因为这种方法会对用户代理字符串具有很强的依赖性