javascript检测浏览器很操作系统
这一篇介绍的是在javascript中怎么样检测浏览器跟操作系统,为什么要确定浏览器呢,因为不同的浏览器实现javascript的方式有所不同。比如在IE中我们用document.body.offsetWidth和document.body.offsetHeifht来确定浏览器的可视化区域的大小。而在Mozilla中却是window.innerWidth和window.innerHeight.所以在这里虽然是一个操作,但是两种浏览器的方法是不一样的,所以我们在检测的时候就要先判断浏览器,然后对不同的浏览器使用不同的方法。
在客户端检测浏览器最重要的对象就是navigator对象,navigator对象是BOM对象之一。它包含一些属性或方法让你能够获取浏览器的诸如版本,名称,平台之类的信息。
javascript提供了两种检测浏览器的方法,一种是对象/特征检测法,一种是user-agent字符串检测
对象/特征检测法
对象检测法是一种判断浏览器能力(而非浏览器的确切型号)的通用方法,对象检测法是依靠对象,或者对象的特性来做检测
window.onload = function () {
if (document.getElementById) {
alert("you BOM is IE");
} else {
alert("you BOM is not IE");
}
}
在这里document.getElementById是IE里取得对象的方法,如果在浏览器不是IE,它就会返回undefined表示为定义。那么在if(undefined)的时候就会返回false,所以执行的就是else里面的代码.这就是对象/特征检测法,注意,这里的getElementById不能加括号,如果加了括号就是要执行这个方法了,而我们这里只是检测存在或者不存在这个特性
user-agent检测法
user-agent检测法是最古老的检测法。每个访问网站的程序都必须提供一个user-agent来向服务器确定它的身份。以前需要在服务端获取,而现在navigator对象的uerAgent属性就能获取到。
user-agent字符串提供了浏览器的大量信息,其中包括浏览器的名称和版本。它还可以确定网站访问者中有多少是使用的特定的浏览器,特定的操作系统。下面的一幅图列出了一些浏览器的user-agent字符串

这里给出各个参数的信息


现在我们来看一段代码
window.onload = function () {
var otext = document.getElementById("GetUserAgent")
var SUserAgent = navigator.userAgent;
otext.value = SUserAgent.toString();
}
在IE中的测试结果是
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
在火狐中的测试结果是Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
这两个有明显的区别最起码,我们能够确定一点的是我们都得到了Windows NT 6.1就是操作系统。然后是浏览器的名称跟版本MSIE9.0/Firefox/7.0.1
Opera的格式是Opera/Appversion (OS;Security)[Language],我猜想的结果我们这里是Opera/8.0 (Windows NT 6.1;U)[zh-cn]
至于为什么会造成这样的区别,我后面再说

浙公网安备 33010602011771号