JavaScript: Список топиков:

JSFAQIII-2:
    Тема : FAQ - III-2. Browser, mouse buttons, cookies, new windows etc.
    -----------------------------------------------------------

    6. Как определить - какой у юзера браузер?

    >> From : Artem Babadzhanyants

    // Browser propeties check library. Version 1.02
    // (C) Zalog 2000. Permission granted to reuse and distribute.
    // e-mail: zalog@pyramid-studio.com

    function Browser(){
      this.checkScreen=Browser_checkScreen;
      this.getCookieVal=Browser_getCookieVal;
      this.fixCookieDate=Browser_fixCookieDate;
      this.getCookie=Browser_getCookie;
      this.setCookie=Browser_setCookie;
      this.deleteCookie=Browser_deleteCookie;
      this.getHostName=Browser_getHostName;
      this.getHostAddress=Browser_getHostAddress;
      this.agent=navigator.userAgent.toLowerCase();
      (navigator.appName)?this.name=navigator.appName:
        this.name=null;
      (navigator.appCodeName) ? this.codeName=navigator.appCodeName :
        this.codeName=null;
      (navigator.securityPolicy) ?
        this.securityPolicy = navigator.securityPolicy :
        this.securityPolicy=null;
      this.versionHi=parseInt(navigator.appVersion);
      this.version=parseFloat(navigator.appVersion);
      if(navigator.cpuClass){
        this.cpu=navigator.cpuClass.toLowerCase();
        this.cpuClass="Unknown CPU class, including Sun SPARC";
        if(navigator.cpuClass.indexOf("x86")!= -1)
          this.cpuClass="Intel processor";
        if((navigator.cpuClass.indexOf("68k")!= -1) ||
            (navigator.cpuClass.indexOf("ppc")!= -1))
          this.cpuClass="Motorola processor";
        if(navigator.cpuClass.indexOf("alpha")!= -1)
          this.cpuClass="Digital processor";
      }else{
        this.cpu=null;
        this.cpuClass=null;
      }
      (navigator.onLine) ? this.onLine=navigator.onLine :
        this.onLine=null;
      if(navigator.cookieEnabled)
        this.cookieEnabled=navigator.cookieEnabled;
      else{
        var expdate=new Date();
        expdate.setTime(expdate.getTime()+(365*24*60*60*1000));
        this.fixCookieDate(expdate);
        this.setCookie("test_js","safe to delete",expdate,"/");
        (this.getCookie("test_js")) ? this.cookieEnabled=true :
          this.cookieEnabled=false;
        this.deleteCookie("test_js","/");
      }
      if(navigator.language)this.language=navigator.language;
      else if(navigator.browserLanguage)
        this.language=navigator.browserLanguage;
      else this.language=null;

      (navigator.systemLanguage) ? this.systemLanguage = navigator.systemLanguage :
        this.systemLanguage=null;
      (navigator.userLanguage) ? this.userLanguage = navigator.userLanguage :
        this.userLanguage=null;
      this.Netscape=((this.agent.indexOf('mozilla')!=-1)&&
        (this.agent.indexOf('spoofer')==-1)&&
        (this.agent.indexOf('compatible')==-1)&&
        (this.agent.indexOf('opera')==-1)&&
        (this.agent.indexOf('webtv')==-1));

      this.Netscape2=(this.Netscape&&(this.versionHi==2));
      this.Netscape3=(this.Netscape&&(this.versionHi==3));
      this.Netscape4=(this.Netscape&&(this.versionHi==4));
      this.Netscape4up=(this.Netscape&&(this.versionHi>=4));
      this.Netscape5=(this.Netscape&&(this.versionHi==5));
      this.Netscape5up=(this.Netscape&&(this.versionHi>=5));
      this.NavigatorOnly=(this.Netscape&&((this.agent.indexOf(";nav")!=-1)||
        (this.agent.indexOf("; nav")!=-1)));

      this.IE=(this.agent.indexOf("msie") != -1);
      this.IE3=(this.IE&&(this.versionHi<4));
      this.IE4=(this.IE&&(this.versionHi==4)&&
        (this.agent.indexOf("msie5.0")==-1));
      this.IE4up=(this.IE&&(this.versionHi>=4));
      this.IE5=(this.IE&&(this.versionHi==4)&&
        (this.agent.indexOf("msie5.0")!=-1));
      this.IE5up=(this.IE&&!this.IE3&&!this.IE4);

      if(this.IE5){
        this.versionHi=parseInt(this.agent.substr(this.agent.indexOf("5.")));
        this.version=parseFloat(this.agent.substr(this.agent.indexOf("5.")));
      }

      this.AOL=(this.agent.indexOf("aol")!= -1);
      this.AOL3=(this.AOL&&this.IE3);
      this.AOL4=(this.AOL&&this.IE4);

      this.Opera=(this.agent.indexOf("opera")!=-1);
      this.WebTV=(this.agent.indexOf("webtv")!=-1);
      if(this.Netscape2||this.IE3)this.jsVersion=1.0;
      else if(this.Netscape3||this.Opera)this.jsVersion=1.1;
      else if((this.Netscape4&&(this.version<=4.05))||
        this.IE4)this.jsVersion=1.2;
      else if((this.Netscape4&&(this.version>4.05))||
        this.IE5)this.jsVersion=1.3;
      else if(this.Netscape5)this.jsVersion=1.4;
      else if(this.Netscape&&(this.versionHi>5))this.jsVersion=1.4;
      else if(this.IE&&(this.versionHi>5))this.jsVersion=1.3;
      else if(_jsVersion>1.3)this.jsVersion=_jsVersion;
      else this.jsVersion=0.0;
      this.vbVersion=vbVer;

      this.osWin=((this.agent.indexOf("win")!=-1)||
        (this.agent.indexOf("16bit")!=-1));
      this.osWin95=((this.agent.indexOf("win95")!=-1)||
        (this.agent.indexOf("windows 95")!=-1));
      this.osWinCE=((this.agent.indexOf("wince")!=-1)||
        (this.agent.indexOf("windows ce")!=-1)||
        (this.agent.indexOf("win ce")!=-1));
      this.osWin16=((this.agent.indexOf("win16")!=-1)||
        (this.agent.indexOf("16bit")!=-1)||
        (this.agent.indexOf("windows3.1")!=-1)||
        (this.agent.indexOf("windows 16-bit")!=-1));
      this.osWin31=((this.agent.indexOf("windows3.1")!=-1)||
        (this.agent.indexOf("win16")!=-1)||
        (this.agent.indexOf("windows16-bit")!=-1));
      this.osWin98=((this.agent.indexOf("win98")!=-1)||
        (this.agent.indexOf("windows 98")!=-1));
      this.osWinNT=((this.agent.indexOf("winnt")!=-1)||
        (this.agent.indexOf("windows nt")!=-1));
      this.osWin2000=(this.osWinNT||(this.agent.indexOf("nt 5.0")!=-1));
      this.osWin32=(this.osWin95||this.osWinNT||this.osWin98||this.osWin2000||
        ((this.versionHi>=4)&& (navigator.platform=="Win32"))||
        (this.agent.indexOf("win32")!=-1)||
        (this.agent.indexOf("32bit")!=-1));

      this.osOS2=((this.agent.indexOf("os/2")!=-1)||
        (navigator.appVersion.indexOf("OS/2")!=-1)||
        (this.agent.indexOf("ibm-webexplorer")!=-1));

      this.osMac=(this.agent.indexOf("mac")!=-1);
      this.osMac68k=(this.osMac&&((this.agent.indexOf("68k")!=-1)||
        (this.agent.indexOf("68000")!=-1)));
      this.osMacPPC=(this.osMac && ((this.agent.indexOf("ppc")!=-1)||
        (this.agent.indexOf("powerpc")!=-1)));

      this.osSun=(this.agent.indexOf("sunos")!=-1);
      this.osSun4=(this.agent.indexOf("sunos 4")!=-1);
      this.osSun5=(this.agent.indexOf("sunos 5")!=-1);
      this.osSuni86=(this.osSun&&(this.agent.indexOf("i86")!=-1));

      this.osIrix=(this.agent.indexOf("irix")!=-1);
      this.osIrix5=(this.agent.indexOf("irix 5")!=-1);
      this.osIrix6=((this.agent.indexOf("irix6")!=-1)||
        (this.agent.indexOf("irix6")!=-1));
      this.osHPUx=(this.agent.indexOf("hp-ux")!=-1);
      this.osHPUx9=(this.osHPUx&&(this.agent.indexOf("09.")!=-1));
      this.osHPUx10=(this.osHPUx&&(this.agent.indexOf("10.")!=-1));

      this.osAIX=(this.agent.indexOf("aix")!=-1);
      this.osAIX1=(this.agent.indexOf("aix 1")!=-1);
      this.osAIX2=(this.agent.indexOf("aix 2")!=-1);
      this.osAIX3=(this.agent.indexOf("aix 3")!=-1);
      this.osAIX4=(this.agent.indexOf("aix 4")!=-1);

      this.osLinux=(this.agent.indexOf("inux")!=-1);
      this.osSCO=(this.agent.indexOf("sco")!=-1)||
        (this.agent.indexOf("unix_sv")!=-1);
      this.osUnixWare=(this.agent.indexOf("unix_system_v")!=-1);
      this.osMPRAS=(this.agent.indexOf("ncr")!=-1);
      this.osReliant=(this.agent.indexOf("reliantunix")!=-1);
      this.osDEC=((this.agent.indexOf("dec")!=-1)||
        (this.agent.indexOf("osf1")!=-1)||
        (this.agent.indexOf("dec_alpha")!=-1)||
        (this.agent.indexOf("alphaserver")!=-1)||
        (this.agent.indexOf("ultrix")!=-1)||
        (this.agent.indexOf("alphastation")!=-1));
      this.osSinix=(this.agent.indexOf("sinix")!=-1);
      this.osBSD=(this.agent.indexOf("bsd")!=-1);
      this.osFreeBSD=(this.agent.indexOf("freebsd")!=-1);
      this.osOpenBSD=(this.agent.indexOf("openbsd")!=-1);
      this.osNetBSD=(this.agent.indexOf("netbsd")!=-1);
      this.osBSDi=(this.agent.indexOf("bsdi")!=-1);
      this.osUnix=((this.agent.indexOf("x11")!=-1)||
        this.osSun||this.osIrix||this.osHPUx||
        this.osSCO||this.osUnixWare||this.osMPRAS||
        this.osReliant||this.osDEC||this.osSinix||
        this.osAIX||this.osLinux||this.osBSD||
        this.osFreeBSD);
      this.osVMS=((this.agent.indexOf("vax")!=-1)||
        (this.agent.indexOf("openvms")!=-1));
      this.hostName=null;
      this.hostAddress=null;
      this.hostName=this.getHostName();
      this.hostAddress=this.getHostAddress();
      this.checkScreen();
    }

    function Browser_checkScreen(){
      if (top.screen){
        (screen.pixelDepth) ? this.pixelDepth = screen.pixelDepth : this.pixelDepth = null;
        (screen.colorDepth) ? this.colorDepth = screen.colorDepth : this.colorDepth = null;
        if(screen.width&&screen.height){
          this.screenWidth=screen.width;
          this.screenHeight=screen.height;
          this.screenResolution=this.screenWidth+"x"+this.screenHeight;
        }else{
          this.screenWidth=null;
          this.screenHeight=null;
          this.screenResolution=null;
        }
        if(screen.availWidth&&screen.availHeight){
          this.availWidth=screen.availWidth;
          this.availHeight=screen.availHeight;
          this.availResolution=this.availWidth+"x"+this.availHeight;
        }else{
          this.availWidth=null;
          this.availHeight=null;
          this.availResolution=null;
        }
        if(this.screenWidth && this.screenHeight&&this.colorDepth)
          this.Resolution=this.screenWidth+"x"+this.screenHeight+"x"+this.colorDepth;
        else
          this.Resolution = null;
      }else{
        this.pixelDepth=null;
        this.colorDepth=null;
        this.availWidth=null;
        this.availHeight=null;
        this.availResolution=null;
        this.screenWidth=null;
        this.screenHeight=null;
        this.screenResolution=null;
        this.Resolution=null;
      }
      if(window.innerWidth) this.innerWidth = window.innerWidth;
      else{
        if(document.body){
          if(document.body.clientWidth)
            this.innerWidth=document.body.clientWidth;
        }else this.innerWidth=null;
      }
      if(window.innerHeight) this.innerHeight = window.innerHeight;
      else{
        if(document.body){
          if(document.body.clientHeight) this.innerHeight = document.body.clientHeight;
        } else this.innerHeight=null;
      }
      (this.innerWidth&&this.innerHeight) ?
        this.innerResolution = this.innerWidth+"x"+this.innerHeight :
        this.innerResolution = null;
      (window.outerWidth) ?
        this.outerWidth = window.outerWidth :
        this.outerWidth = null;
      (window.outerHeight) ?
        this.outerHeight = window.outerHeight :
        this.outerHeight = null;
      (this.outerWidth && this.outerHeight) ?
        this.outerResolution = this.outerWidth+"x"+this.outerHeight :
        this.outerResolution = null;
      (window.offscreenBuffering) ?
        this.offscreenBuffering = window.offscreenBuffering :
        this.offscreenBuffering = null;
      if(window.frameRate) this.frameRate = window.frameRate;
      else this.frameRate = null;
    }

    function Browser_getCookieVal(offset){
      var endstr=document.cookie.indexOf(";",offset);
      if(endstr==-1)endstr=document.cookie.length;
      return unescape(document.cookie.substring(offset,endstr));
    }

    function Browser_fixCookieDate(date){
      var base=new Date(0);
      var skew=base.getTime();
      if(skew>0)date.setTime(date.getTime()-skew);
    }

    function Browser_getCookie(name){
      var arg=name+"=";
      var alen=arg.length;
      var clen=document.cookie.length;
      var i=0;
      while(i<clen){
        var j=i+alen;
        if(document.cookie.substring(i,j)==arg)return this.getCookieVal(j);
        i=document.cookie.indexOf(" ",i)+1;
        if(i==0)break;
      }
      return null;
    }

    function Browser_setCookie(name,value,expires,path,domain,secure){
      document.cookie=name+"="+escape(value)+((expires)?";
      expires="+expires.toGMTString():"")+((path)?";
      path="+path:"")+((domain)?";
      domain="+domain:"")+((secure)?";
      secure":"");
    }

    function Browser_deleteCookie(name,path,domain){
      if(this.getCookie(name))document.cookie=name+"="+((path)?";
      path="+path:"")+((domain)?";
      domain="+domain:"")+";
      expires=Thu, 01-Jan-70 00:00:01 GMT";
    }

    function Browser_getHostName(){
      if(navigator.appName.lastIndexOf('Netscape')!=-1)
        if(navigator.javaEnabled()==1){
          window.onerror=null;
          hostAddress=java.net.InetAddress.getLocalHost();
          return(hostAddress.getHostName());
        }
      return null;
    }

Сайт управляется системой uCoz