Patches #407882, was updated on 2001-03-12 03:34
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=305757&aid=407882&group_id=5757

Category: DynAPI-Core
Group: None
Status: Open
Priority: 5
Submitted By: Nobody/Anonymous
Assigned to: Nobody/Anonymous
Summary: Browser.js Recommended Upgrade

Initial Comment:
The following is a recommendation for changing the 
Browser.js code.  This should fix several bugs which 
currently exist which affect the detection of Opera, 
MSIE, win32, and mac systems.  It would obviously 
require making changes throughout the API system due 
to changes being made in variables.

-----Code Follows-----


/*
   DynAPI Distribution
   Browser Class

   The DynAPI Distribution is distributed under the 
terms of the GNU LGPL license.
*/ 

function Browser ()
{  // convert all characters to lowercase to simplify 
testing
   var agt=navigator.userAgent.toLowerCase();

   // *** BROWSER VERSION ***
   this.major = parseInt(navigator.appVersion);
   this.minor = parseFloat(navigator.appVersion);

   // Note: Opera and WebTV spoof.  Perform strict 
client detection to prevent this.
   this.nav  = ((agt.indexOf('mozilla')!=-1) && 
(agt.indexOf('spoofer')==-1)
               && (agt.indexOf('compatible') == -1) && 
(agt.indexOf('opera')==-1)
               && (agt.indexOf('webtv')==-1) && 
(agt.indexOf('hotjava')==-1));
   this.nav4 = (this.nav && (this.major == 4));
   this.nav6 = (this.nav && (this.major == 5));
   this.gecko = (agt.indexOf('gecko') != -1); // Test 
for Gecko Engine

   this.ie     = ((agt.indexOf("msie") != -1) && 
(agt.indexOf("opera") == -1));
   this.ie4    = (this.ie && (this.major == 4) && 
(agt.indexOf("msie 5")==-1) );
   this.ie5    = (this.ie && (this.major == 4) && 
(agt.indexOf("msie 5.0")!=-1) );
   this.ie5_5  = (this.ie && (this.major == 4) && 
(agt.indexOf("msie 5.5") !=-1));
   this.ie5up  = (this.ie  && !this.ie3 && !
this.ie4); //Recommend using this for loops to detect 
msie 5+

   this.opera = (agt.indexOf("opera") != -1);

   // *** PLATFORM ***
   this.win   = ( (agt.indexOf("win")!=-1) || 
(agt.indexOf("16bit")!=-1) );
   // NOTE: On Opera 3.0, the userAgent string 
includes "Windows 95/NT4" on all
   //       Win32, so you can't distinguish between 
Win95 and WinNT.
   this.win95 = ((agt.indexOf("win95")!=-1) || 
(agt.indexOf("windows 95")!=-1));

   // is this a 16 bit compiled version?
   this.win16 = ((agt.indexOf("win16")!=-1) || 
                (agt.indexOf("16bit")!=-1) || 
(agt.indexOf("windows 3.1")!=-1) || 
                (agt.indexOf("windows 16-bit")!=-
1) );  

   this.win31 = ((agt.indexOf("windows 3.1")!=-1) || 
(agt.indexOf("win16")!=-1) ||
                (agt.indexOf("windows 16-bit")!=-1));

   // NOTE: Reliable detection of Win98 may not be 
possible. It appears that:
   //       - On Nav 4.x and before you'll get 
plain "Windows" in userAgent.
   //       - On Mercury client, the 32-bit version 
will return "Win98", but
   //         the 16-bit version running on Win98 will 
still return "Win95".
   this.win98 = ((agt.indexOf("win98")!=-1) || 
(agt.indexOf("windows 98")!=-1));
   this.winnt = ((agt.indexOf("winnt")!=-1) || 
(agt.indexOf("windows nt")!=-1));

   this.winme = ((agt.indexOf("win 9x 4.90")!=-1));
   this.win2k = ((agt.indexOf("windows nt 5.0")!=-1));

   this.win32 = (this.winme || this.win2k || 
this.win95 || this.winnt || this.win98 || 
                ((this.major >= 4) && 
(navigator.platform == "Win32")) ||
                (agt.indexOf("win32")!=-1) || 
(agt.indexOf("32bit")!=-1));

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

   this.mac    = (agt.indexOf("mac")!=-1);
   this.mac68k = (this.mac && ((agt.indexOf("68k")!=-
1) || 
                 (agt.indexOf("68000")!=-1)));
   this.macppc = (this.mac && ((agt.indexOf("ppc")!=-
1) || 
                 (agt.indexOf("powerpc")!=-1)));
   this.macos  = (this.mac || this.mac68k || 
this.macppc);

   this.sun   = (agt.indexOf("sunos")!=-1);
   this.sun4  = (agt.indexOf("sunos 4")!=-1);
   this.sun5  = (agt.indexOf("sunos 5")!=-1);
   this.suni86= (this.sun && (agt.indexOf("i86")!=-1));
   this.irix  = (agt.indexOf("irix") !=-1);    // SGI
   this.irix5 = (agt.indexOf("irix 5") !=-1);
   this.irix6 = ((agt.indexOf("irix 6") !=-1) || 
(agt.indexOf("irix6") !=-1));
   this.hpux  = (agt.indexOf("hp-ux")!=-1);
   this.hpux9 = (this.hpux && (agt.indexOf("09.")!=-
1));
   this.hpux10= (this.hpux && (agt.indexOf("10.")!=-
1));
   this.aix   = (agt.indexOf("aix") !=-1);      // IBM
   this.aix1  = (agt.indexOf("aix 1") !=-1);    
   this.aix2  = (agt.indexOf("aix 2") !=-1);    
   this.aix3  = (agt.indexOf("aix 3") !=-1);    
   this.aix4  = (agt.indexOf("aix 4") !=-1);    
   this.linux = (agt.indexOf("inux")!=-1);
   this.sco   = (agt.indexOf("sco")!=-1) || 
(agt.indexOf("unix_sv")!=-1);
   this.unixware = (agt.indexOf("unix_system_v")!=-1); 
   this.mpras    = (agt.indexOf("ncr")!=-1); 
   this.reliant  = (agt.indexOf("reliantunix")!=-1);
   this.dec   = ((agt.indexOf("dec")!=-1) || 
(agt.indexOf("osf1")!=-1) || 
                (agt.indexOf("dec_alpha")!=-1) || 
(agt.indexOf("alphaserver")!=-1) || 
                (agt.indexOf("ultrix")!=-1) || 
(agt.indexOf("alphastation")!=-1)); 
   this.sinix = (agt.indexOf("sinix")!=-1);
   this.freebsd = (agt.indexOf("freebsd")!=-1);
   this.bsd = (agt.indexOf("bsd")!=-1);
   this.unix  = ((agt.indexOf("x11")!=-1) || this.sun 
|| this.irix || this.hpux || 
                this.sco ||this.unixware || this.mpras 
|| this.reliant || 
                this.dec || this.sinix || this.aix || 
this.linux || this.bsd || this.freebsd);

   this.vms   = ((agt.indexOf("vax")!=-1) || 
(agt.indexOf("openvms")!=-1));
}

is = DynAPI.browser = new Browser();


----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=305757&aid=407882&group_id=5757

_______________________________________________
Dynapi-Dev mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/dynapi-dev

Reply via email to