实现客户端类型检测

客户端检测是JavaScript开发中颇具争议的一个话题。由于浏览器版本众多,且之间存在差别,通过需要根据不同浏览器的能力分别编写不同的代码,目前常用的方法有三种:

(1)能力检测:在编写代码之前先检测特定浏览器的能力。如,在调用某个函数之前,需要先检测该函数是否存在,这种方法使得开发人员能够把注意力集中在相应的能力是否存在上,而不用去考虑具体的浏览器类型和版本,但同时这也其缺点之一,就是无法精确的检测特定的浏览器类型和版本。

(2)怪癖检测:实际上是检测浏览器中存在的bug。不同的浏览器存在不同的怪癖(bug),因此通过一段检测bug的代码可以确定浏览器是否存在该bug,但同样该方法无法精确的检测特定的浏览器类型和版本。

(3)用户代理检测:通过检测用户代理字符串来识别浏览器。用户代理字符串中包含了大量浏览器相关信息,如浏览器类型、平台、操作系统、版本号等,该方法在一定程度上是可以精确的检测出特定的浏览器类型和版本,但是有些浏览器提供商会在用户代理字符串中添加一些欺骗性信息来隐瞒开发者,因此该方法也存在问题。

在决定使用客户端检测方法时,一般应优先考虑使用能力检测,而用户代理检测则是客户端检测的最后一种方案,因为该方法对用户代理字符串有很强的依赖性。

效果展示

本文参考《JavaScript高级程序设计第2版》

原文地址:https://www.cnblogs.com/twobin/p/3362860.html