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