<grin />
 
You mean you don't want this:
 
// Ultimate client-side JavaScript client sniff. 
// (C) Netscape Communications 1999.  Permission granted to reuse and
distribute. 
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below). 
// Everything you always wanted to know about your JavaScript client 
// but were afraid to ask. Creates "is_" variables indicating: 
// (1) browser vendor: 
//     is_nav, is_ie, is_opera 
// (2) browser version number: 
//     is_major (integer indicating major version number: 2, 3, 4 ...) 
//     is_minor (float   indicating full  version number: 2.02, 3.01,
4.04 ...) 
// (3) browser vendor AND major version number 
//     is_nav2, is_nav3, is_nav4, is_nav4up, is_nav5, is_nav5up, is_ie3,
is_ie4, is_ie4up 
// (4) JavaScript version number: 
//     is_js (float indicating full JavaScript version number: 1, 1.1,
1.2 ...) 
// (5) OS platform and version: 
//     is_win, is_win16, is_win32, is_win31, is_win95, is_winnt,
is_win98 
//     is_os2 
//     is_mac, is_mac68k, is_macppc 
//     is_unix 
//        is_sun, is_sun4, is_sun5, is_suni86 
//        is_irix, is_irix5, is_irix6 
//        is_hpux, is_hpux9, is_hpux10 
//        is_aix, is_aix1, is_aix2, is_aix3, is_aix4 
//        is_linux, is_sco, is_unixware, is_mpras, is_reliant 
//        is_dec, is_sinix, is_freebsd, is_bsd 
//     is_vms 
// 
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html
<http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html>  and 
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
<http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html>  
// for detailed lists of userAgent strings. 
// 
// Note: you don't want your Nav4 or IE4 code to "turn off" or 
// stop working when Nav5 and IE5 (or later) are released, so 
// in conditional code forks, use is_nav4up ("Nav4 or greater") 
// and is_ie4up ("IE4 or greater") instead of is_nav4 or is_ie4 
// to check version in code which you want to work on future 
// versions. 
 
    // convert all characters to lowercase to simplify testing 
    var agt=navigator.userAgent.toLowerCase(); 
 
    // *** BROWSER VERSION *** 
    // Note: On IE5, these return 4, so use is_ie5up to detect IE5. 
    var is_major = parseInt(navigator.appVersion); 
    var is_minor = parseFloat(navigator.appVersion); 
 
    // Note: Opera and WebTV spoof Navigator.  We do strict client
detection. 
    // If you want to allow spoofing, take out the tests for opera and
webtv. 
    var is_nav  = ((agt.indexOf('mozilla')!=-1) &&
(agt.indexOf('spoofer')==-1) 
                && (agt.indexOf('compatible') == -1) &&
(agt.indexOf('opera')==-1) 
                && (agt.indexOf('webtv')==-1)); 
    var is_nav2 = (is_nav && (is_major == 2)); 
    var is_nav3 = (is_nav && (is_major == 3)); 
    var is_nav4 = (is_nav && (is_major == 4)); 
    var is_nav4up = (is_nav && (is_major >= 4)); 
    var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) || 
                          (agt.indexOf("; nav") != -1)) ); 
    var is_nav5 = (is_nav && (is_major == 5)); 
    var is_nav5up = (is_nav && (is_major >= 5)); 
 
    var is_ie   = (agt.indexOf("msie") != -1); 
    var is_ie3  = (is_ie && (is_major < 4)); 
    var is_ie4  = (is_ie && (is_major == 4) && (agt.indexOf("msie
5.0")==-1) ); 
    var is_ie4up  = (is_ie  && (is_major >= 4)); 
    var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie
5.0")!=-1) ); 
    var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4); 
 
    // KNOWN BUG: On AOL4, returns false if IE3 is embedded browser 
    // or if this is the first browser window opened.  Thus the 
    // variables is_aol, is_aol3, and is_aol4 aren't 100% reliable. 
    var is_aol   = (agt.indexOf("aol") != -1); 
    var is_aol3  = (is_aol && is_ie3); 
    var is_aol4  = (is_aol && is_ie4); 
 
    var is_opera = (agt.indexOf("opera") != -1); 
    var is_webtv = (agt.indexOf("webtv") != -1); 
 
    // *** JAVASCRIPT VERSION CHECK *** 
    var is_js; 
    if (is_nav2 || is_ie3) is_js = 1.0 
    else if (is_nav3 || is_opera) is_js = 1.1 
    else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2 
    else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3 
    else if (is_nav5) is_js = 1.4 
    // NOTE: In the future, update this code when newer versions of JS 
    // are released. For now, we try to provide some upward
compatibility 
    // so that future versions of Nav and IE will show they are at 
    // *least* JS 1.x capable. Always check for JS version compatibility

    // with > or >=. 
    else if (is_nav && (is_major > 5)) is_js = 1.4 
    else if (is_ie && (is_major > 5)) is_js = 1.3 
    // HACK: no idea for other browsers; always check for JS version
with > or >= 
    else is_js = 0.0; 
 
    // *** PLATFORM ***
    var is_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.
    var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows
95")!=-1));
 
    // is this a 16 bit compiled version?
    var is_win16 = ((agt.indexOf("win16")!=-1) || 
               (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows
3.1")!=-1) || 
               (agt.indexOf("windows 16-bit")!=-1) );  
 
    var is_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".
    var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows
98")!=-1));
    var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows
nt")!=-1));
    var is_win32 = (is_win95 || is_winnt || is_win98 || 
                    ((is_major >= 4) && (navigator.platform == "Win32"))
||
                    (agt.indexOf("win32")!=-1) ||
(agt.indexOf("32bit")!=-1));
 
    var is_os2   = ((agt.indexOf("os/2")!=-1) || 
                    (navigator.appVersion.indexOf("OS/2")!=-1) ||   
                    (agt.indexOf("ibm-webexplorer")!=-1));
 
    var is_mac    = (agt.indexOf("mac")!=-1);
    var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) || 
                               (agt.indexOf("68000")!=-1)));
    var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) || 
                                (agt.indexOf("powerpc")!=-1)));
 
    var is_sun   = (agt.indexOf("sunos")!=-1);
    var is_sun4  = (agt.indexOf("sunos 4")!=-1);
    var is_sun5  = (agt.indexOf("sunos 5")!=-1);
    var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
    var is_irix  = (agt.indexOf("irix") !=-1);    // SGI
    var is_irix5 = (agt.indexOf("irix 5") !=-1);
    var is_irix6 = ((agt.indexOf("irix 6") !=-1) ||
(agt.indexOf("irix6") !=-1));
    var is_hpux  = (agt.indexOf("hp-ux")!=-1);
    var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
    var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
    var is_aix   = (agt.indexOf("aix") !=-1);      // IBM
    var is_aix1  = (agt.indexOf("aix 1") !=-1);    
    var is_aix2  = (agt.indexOf("aix 2") !=-1);    
    var is_aix3  = (agt.indexOf("aix 3") !=-1);    
    var is_aix4  = (agt.indexOf("aix 4") !=-1);    
    var is_linux = (agt.indexOf("inux")!=-1);
    var is_sco   = (agt.indexOf("sco")!=-1) ||
(agt.indexOf("unix_sv")!=-1);
    var is_unixware = (agt.indexOf("unix_system_v")!=-1); 
    var is_mpras    = (agt.indexOf("ncr")!=-1); 
    var is_reliant  = (agt.indexOf("reliantunix")!=-1);
    var is_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)); 
    var is_sinix = (agt.indexOf("sinix")!=-1);
    var is_freebsd = (agt.indexOf("freebsd")!=-1);
    var is_bsd = (agt.indexOf("bsd")!=-1);
    var is_unix  = ((agt.indexOf("x11")!=-1) || is_sun || is_irix ||
is_hpux || 
                 is_sco ||is_unixware || is_mpras || is_reliant || 
                 is_dec || is_sinix || is_aix || is_linux || is_bsd ||
is_freebsd);
 
    var is_vms   = ((agt.indexOf("vax")!=-1) ||
(agt.indexOf("openvms")!=-1));
 
         
                  

-----Original Message-----
From: Michael Pemberton [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, March 13, 2001 1:19 AM
To: [EMAIL PROTECTED]
Subject: Re: [Dynapi-Dev] [ dynapi-Patches-407882 ] Browser.js
Recommended Upgrade


I'm afraid I have to agree with Doug here. 

The reason for detecting the various browsers is for COMPATIBILITY.  It
is not intended to be used as a giant test to see which variant of a
spoofed AOL browser they are using. 


If you can find an example of the API working on a specific platform
that requires a few browser specific fixes, send em on in.  THEN, and
ONLY THEN is there any point in detecting the browser.  Otherwise we are
just simply wasting our time detecting which non-compliant browser they
are using and they won't be able to see your page anyway. 


Doug Melvin wrote: 


oh yes!! 
let's make broswer.js three time larger!! 
Why didn't I think of that.. 

(note heavy sense of sarcasm) 
----- Original Message ----- 
From: "nobody" <[EMAIL PROTECTED]> 
To: <[EMAIL PROTECTED]> 
Sent: Monday, March 12, 2001 3:34 AM 
Subject: [Dynapi-Dev] [ dynapi-Patches-407882 ] Browser.js Recommended 
Upgrade 


> Patches #407882, was updated on 2001-03-12 03:34 
> You can respond by visiting: 
> 
http://sourceforge.net/tracker/?func=detail
<http://sourceforge.net/tracker/?func=detail&atid=305757&aid=407882&grou
p_id=> &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
<http://sourceforge.net/tracker/?func=detail&atid=305757&aid=407882&grou
p_id=> &atid=305757&aid=407882&group_id= 
5757 
> 
> _______________________________________________ 
> Dynapi-Dev mailing list 
> [EMAIL PROTECTED] 
> http://lists.sourceforge.net/lists/listinfo/dynapi-dev
<http://lists.sourceforge.net/lists/listinfo/dynapi-dev>  


--- 
Outgoing mail is certified Virus Free by AVG Free Edition 
Download at: http://www.grisoft.com/html/us_index.cfm
<http://www.grisoft.com/html/us_index.cfm>  
Checked by AVG anti-virus system ( http://www.grisoft.com
<http://www.grisoft.com> ). 
Version: 6.0.237 / Virus Database: 115 - Release Date: 3/7/01 


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

-- 
Michael Pemberton 
[EMAIL PROTECTED] 
ICQ: 12107010 
  


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

Reply via email to