K_Reverter的网页开发记录

要么不做,要么就当作艺术品来做!

导航

Google Maps API 2.0解析(2-GBrowser)

 

//浏览器属性对象
  var browser;
  
//支持的浏览器数组
  var Ac=["opera","msie","safari","firefox","mozilla"];
  
//操作系统列表
  var Mc=["x11;","macintosh","windows"];
  
//浏览器信息相关的类,构造函数参数为navigator.userAgent
  function GBrowser(a)
  {
   
this.type=-1;//浏览器类型
   this.os=-1;//操作系统类型
   this.version=0;//浏览器版本号
   this.revision=0;//浏览器修订版号
   var a=a.toLowerCase();
   
//获取浏览器类型和版本
   for(var b=0;b<Ac.length;b++)
   {
    
var c=Ac[b];
    
if(a.indexOf(c)!=-1)
    {
     
this.type=b;
     
var d=new RegExp(c+"[ /]?([0-9]+(.[0-9]+)?)");
     
if(d.exec(a)!=null)
     {
      
this.version=parseFloat(RegExp.$1)
     }
     
break
    }
   }
   
//获取操作系统类型
   for(var b=0;b<Mc.length;b++)
   {
    
var c=Mc[b];
    
if(a.indexOf(c)!=-1)
    {
     
this.os=b;
     
break
    }
   }
   
//获取浏览器修订版号
   if(this.type==4||this.type==3)
   {
    
if(/\brv:\s*(\d+\.\d+)/.exec(a))
    {
     
this.revision=parseFloat(RegExp.$1)
    }
   }
  }
  
//是否FireFox或mozilla浏览器
  GBrowser.prototype.isFirefox=function()
  {
   
return this.type==3||this.type==4
  };
  
//是否不支持事件穿透,事件穿透(我不知道正式名称叫什么)是指透明的HTML对象不影响被其遮住的层的事件捕获
  GBrowser.prototype.NoEventPenetrate=function()
  {
   
return this.type==4&&this.revision<1.7
  };

        在这个版本里面Google终于将这个类对象化了,我记得在以前的版本之中Google释放出了一个browser变量(不知道为什么这个变量药用那么常用的名称),结果和我的网站统计代码冲突,这个缺点这次终于改正了,不过Google的事件穿透技术实在是非常牛,我至今都没有研究的很清楚。

posted on 2006-04-28 00:56  K_Reverter  阅读(570)  评论(0编辑  收藏  举报