您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

浏览器版本测试

在js中测试浏览器类型及版本,以撰写相应的代码。

以下内容来自网站建设版斑竹eagle的主页http://gzeagle.163.net,本人

已经征得其转载许可,如果你需要转载请先和ealge联系

现在占主流的浏览器基本是 Netscape 和 Micrsoft Internet Explorer,

但这两种浏览器却往往有不兼容的地方,还有即使同一中浏览器中也有几个版

本,以 Netscape 为例,就有2.0、3.0、3.0 Gold、4.0x几个版本。浏览器

的种类不同,版本不同对 HTML 和 JavaScript的支持也不同,这对写网页来

说实在是太麻烦了。所以有些人就在网页中加入下面这样一个连接“使用某某

浏览器这请由次进入”。这样针对不同的浏览器写不同的页,以达到最佳的效

果。这的确是一种办法,可不可以自动检测浏览者所使用的浏览器,然后根据

不同的浏览器显示不同的页呢?可以通过JavaScript实现。JavaScript 有

一个叫 Navigator 的对象,它是用来提供浏览器的信息的对象有四个属性:

appName、appVersion、appCodeName、userAgent,这些值和他们的含义

如下表:

属性名称 含义

appName 返回用户浏览器名

appVersion 返回用户浏览器的版本号,和用户的操作系统类型(win32、

win95、unix和mac等),国家代码( I 表示国际版本,U 表示美国版本)

appCodeName 返回用户浏览器的制造商内部发行代码名

userAgent 使用在http的报头中,它是appName和appVersion的联合,Web

服务器用这以信息来识别浏览器的能力。

使用这几个属性的正确语法是在前面加上 "navigator." 请看下面的代码:

<p><script language="JavaScript"><!--

document.writeln(navigator.appName+"<br>");

document.writeln(navigator.appVersion+"<br>");

document.writeln(navigator.appCodeName+"<br>");

document.writeln(navigator.userAgent+"<br>");

// --></script></p>

接着下来的是代码输出的结果, 根据用户浏览器不同,输出也不同,但是有一

点要说明的是,如果你是 IE 的用户,appCodeName 测出来的是 Mozilla。

而不是 Microsoft Internet Explorer,请看:

Microsoft Internet Explorer

4.0 (compatible; MSIE 5.0b1; Windows 95)

Mozilla

Mozilla/4.0 (compatible; MSIE 5.0b1; Windows 95)

下面是不同浏览器的不同输出:

Internet Explorer 4.0

appName Microsoft Internet Explorer

appVersion 4.0 (compatible; MSIE 4.0; Windows 95)

appCodeName Mozilla

userAgent Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)

Internet Explorer 3.01

appName Microsoft Internet Explorer

appVersion 2.0 (compatible; MSIE 3.01; Windows 95)

appCodeName Mozilla

userAgent Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)

Netscape4.04

appName Netscape

appVersion 4.04 [en] (Win95; I; 16bit)

appCodeName Mozilla

userAgent Mozilla/4.04 [en] (Win95; I; 16bit)

Netscape 3.0

appName Netscape

appVersion 3.0 (Win95; I)

appCodeName Mozilla

userAgent Mozilla/3.0 (Win95; I)

但是上面的那个 JavaScript 很难在网页编写中派上用场, 所以有必要编写

一个能够准确地返回浏览器的版本和类型的函数。因为在实际应用中,我们要

知道的往往是浏览器的版本大于多少或浏览器是哪一种类型就足够了。下面是

一个应用的例子,提供大家参考。代码如下:

function testversion(){

IE= new String("Microsoft Internet Explorer");

NS= new String("Netscape");

var version = -1;

var type = "none";

if(navigator.appName==IE){ //判别是否为IE

type = IE;

if(navigator.userAgent.indexOf("Mozilla/4.0")!= -1)

version = 4; //是否为4.0

else

version = 3;

}

else{

if(navigator.appName == NS){//判别是否为Netscape

type = NS;

if(navigator.userAgent.indexOf("Mozilla/2.0") != -1)//2.0吗?

version = 2;

else

if(navigator.userAgent.indexOf("Mozilla/3.0") != -1)//3.0吗?

version = 3;

else

if (navigator.userAgent.indexOf("Mozilla/4.0") != -1)//4.0吗?

version = 4;

else{//都不是!

version = -1;

type = "none";

}

}

}

return version;

//或者加入:retutn type; 看需要而定

}

把函数如果要返回用户浏览器版本,则只需加入“return version;”这句,

如果要返回浏览器的类型则只需加入“return type”这句。

来源:http://www.moon-soft.com/program/bbs/readelite3653.htm

作者 不见不散 本文仅代表作者观点,与龙卷风资讯网立场无关。

我来说两句

内容/Content