检测浏览器类型的方法有多种,常用方法包括两种:特征检测法和字符串检测法。这两种方法都存在各自的优点与缺点,用户可以根据需要酌情选择。
特征检测法
特征检测法就是根据浏览器是否支持特定功能来决定相应操作的方式。这是一种非精确判断法,但却是最安全的检测方法。因为准确检测浏览器的类型和型号是一件很困难的事情,而且很容易存在误差。如果不关心浏览器的身份,仅仅在意浏览器的执行能力,那么使用特征检测法就完全可以满足需要。
【示例1】下面代码检测当前浏览器是否支持document.getElementsByName特性,如果支持就使用该方法获取文档中的a元素;否则再检测是否支持document.getElementsByTagName特性,如果支持就使用该方法获取文档中的a元素。
if(document.getElementsByName){ //如果存在,则使用该方法获取a元素
var a = document.getElementsByName("a");
}
else if(document.getElementsByTagName){ //如果存在,则使用该方法获取a元素
var a = document.getElementsByTagName("a");
}
当使用一个对象、方法或属性时,先判断它是否存在。如果存在,则说明浏览器支持该对象、方法或属性,那么就可以放心使用。
字符串检测法
客户端浏览器每次发送HTTP请求时,都会附带有一个user-agent(用户代理)字符串,对于Web开发人员来说,可以使用用户代理字符串检测浏览器类型。
【示例2】BOM在navigator对象中定义了userAgent属性,利用该属性可以捕获客户端user-agent字符串信息。
var s = window.navigator.userAgent; //简写方法 var s = navigator.userAgent; console.log(s); //返回类似信息:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)
user-agent字符串包含了Web浏览器的大量信息,如浏览器的名称和版本。
【注意】
对于不同浏览器来说,该字符串所包含的信息也不尽相同。随着浏览器版本的不断升级,返回的user-agent字符串格式和信息也会不断变化。