精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>网络专区>>● 网站建设>>盖世神功 — 网站建设技术>>Java Script — 来一杯热咖啡>>JavaScript实作之浏览器版本测试

主题:JavaScript实作之浏览器版本测试
发信人: microant()
整理人: microant(1999-08-02 12:13:50), 站内信件
以下内容来自网站建设版斑竹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”这句。




--
                                   Microant(蚁不群)
活在理想、追求和拼搏中,尽管很累,但很快乐;
活在满足、虚荣和颓废中,尽管轻松,但却走向了灭亡!
就让我们残忍点对待自己吧,生活会给予我们回报的。

※ 修改:.microant 于 Jul 29 23:42:15 修改本文.[FROM: 202.96.190.124]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.124]

[关闭][返回]