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]

至于为什么会造成这样的区别,我后面再说

posted @ 2011-10-30 01:04  刘中栋  阅读(390)  评论(0)    收藏  举报