Detect OS and Browser by JavaScript
* Check the Browser and OS
* Author:Nicholas C. Zakas
*/
/*
* Check the Browser
*/
//Save the user-agent string
var sUserAgent = window.navigator.userAgent;
//Save the Browser’s version
var fAppVersion = parseFloat(window.navigator.appVersion) ;
/*
* Compare the browser version
*/
function compareVersions(sVersion1,sVersion2)
{
var aVersion1 = sVersion1.split(“.”);
var aVersion2 = sVersion2.split(“.”);
if(aVersion1.length < aVersion2.length)
{
for(var i=0;i<aVersion2.length-aVersion1.length;i++)
aVersion1.push(“0″);
}else if(aVersion2.length < aVersion1.length)
{
for(var i=0;i<aVersion1.length-aVersion2.length;i++)
aVersion2.push(“0″);
}
for(var i=0;i<aVersion1.length;i++)
{
var iVal1 = parseInt(aVersion1[i],10);
var iVal2 = parseInt(aVersion2[i],10);
if(iVal1<iVal2)
return -1;
else if(iVal1>iVal2)
return 1;
}
return 0;
}
/*
* Opera
*/
var isOpera = sUserAgent.indexOf(“Opera”)>-1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;
if(isOpera)
{
var fOperaVersion;
if(window.navigator.appName==“Opera”)
{
fOperaVersion = fAppVersion;
}else
{
var reOperaVersion = new RegExp(“Opera (\\d+\\.\\d+)”);
reOperaVersion.test(sUserAgent);
fOperaVersion = parseFloat(RegExp["$1"]);
}
isMinOpera4 = fOperaVersion>=4;
isMinOpera5 = fOperaVersion>=5;
isMinOpera6 = fOperaVersion>=6;
isMinOpera7 = fOperaVersion>=7;
isMinOpera7_5 = fOperaVersion>=7.5;
}
/*
* Konqueror/Safari
*/
var isKHTML = sUserAgent.indexOf(“KHTML”)>-1
||sUserAgent.indexOf(“Konqueror”)>-1
||sUserAgent.indexOf(“AppleWebKit”)>-1;
if(isKHTML)
{
isSafari = sUserAgent.indexOf(“AppleWebKit”)>-1;
isKonq = sUserAgent.indexOf(“Konqueror”)>-1;
var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;
if(isSafari)
{
var reAppleWebKit = new RegExp(“AppleWebKit\\/(\\d+(?:\\.\\d*)?)”);
reAppleWebKit.test(sUserAgent);
var fAppleWebKitVersion = parseFloat(RegExp["$1"]);
isMinSafari1 = fAppleWebKitVersion>=85;
isMinSafari1_2 = fAppleWebKitVersion>=124;
}
else if(isKonq)
{
var reKonq = new RegExp(“Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)”);
reKonq.test(sUserAgent);
isMinKonq2_2 = compareVersions(RegExp["$1"],“2.2″)>=0;
isMinKonq3 = compareVersions(RegExp["$1"],“3.0″)>=0;
isMinKonq3_1 = compareVersions(RegExp["$1"],“3.1″)>=0;
isMinKonq3_2 = compareVersions(RegExp["$1"],“3.2″);
}
}
/*
* IE
*/
var isIE = sUserAgent.indexOf(“compatible”)>-1
&& sUserAgent.indexOf(“MSIE”)>-1
&& !isOpera;
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;
if(isIE)
{
var reIE = new RegExp(“MSIE (\\d+\\.\\d+);”);
reIE.test(sUserAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
isMinIE4 = fIEVersion>=4;
isMinIE5 = fIEVersion>=5;
isMinIE5_5 = fIEVersion>=5.5;
isMinIE6 = fIEVersion>=6.0;
}
/*
* Mozilla
*/
var isMoz = sUserAgent.indexOf(“Gecko”)>-1 && !isKHTML;
var isMinMoz1 = isMinMoz1_4 = isMinMoz1_5 = false;
if(isMoz)
{
var reMoz = new RegExp(“rv:(\\d+\\.\\d+(?:\\.\\d+)?)”);
reMoz.test(sUserAgent);
isMinMoz1 = compareVersions(RegExp["$1"],“1.0″)>=0;
isMinMoz1_4 = compareVersions(RegExp["$1"],“1.4″)>=0;
isMinMoz1_5 = compareVersions(RegExp["$1"],“1.5″)>=0;
}
/*
* Netscape Communicator 4.x
*/
var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML && (sUserAgent.indexOf(“Mozilla”)==0) && (navigator.appName == “Netscape”) && (fAppVersion>=4.0 && fAppVersion<5.0);
var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;
if(isNS4)
{
isNS4 = true;
isMinNS4_5 = fAppVersion>=4.5;
isMinNS4_7 = fAppVersion>=4.7;
isMinNS4_8 = fAppVersion>=4.8;
}
/*
* Check the OS
* Windows,Macintosh and Unix
*/
var isWin = (window.navigator.platform ==“Win32″)||(window.navigator.platform==“Windows”);
var isMac = (window.navigator.platform ==“Mac68K”)||(window.navigator.platform == “MacPPC”);
var isUnix = (window.navigator.platform == “X11″) && !isWin && !isMac;
var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;
if(isWin)
{
isWin95 = sUserAgent.indexOf(“Win95″)>-1 || sUserAgent.indexOf(“Windows 95″)>-1;
isWin98 = sUserAgent.indexOf(“Win98″)>-1 || sUserAgent.indexOf(“Windows 98″)>-1;
isWinME = sUserAgent.indexOf(“Win 9x 4.90″)>-1 || sUserAgent.indexOf(“Windows ME”)>-1;
isWin2K = sUserAgent.indexOf(“Windows NT 5.0″)>-1 || sUserAgent.indexOf(“Windows 2000″)>-1;
isWinXP = sUserAgent.indexOf(“Windows NT 5.1″)>-1 || sUserAgent.indexOf(“Windows XP”)>-1;
isWinNT4 = sUserAgent.indexOf(“WinNT”)>-1 || sUserAgent.indexOf(“Windows NT”)>-1 || sUserAgent.indexOf(“WinNT4.0″)>-1 || sUserAgent.indexOf(“Windows NT 4.0″)>-1 && (!isWinME && !isWin2K && !isWinXP);
}
var isMac68K = isMacPPC = false;
if(isMac)
{
isMac68K = sUserAgent.indexOf(“Mac_68000″)>-1 || sUserAgent.indexOf(“68K”)>-1;
isMacPPC = sUserAgent.indexOf(“Mac_PowerPC”)>-1 || sUserAgent.indexOf(“PPC”)>-1;
}
/*
* Unix
*/
var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;
if(isUnix)
{
isSunOS = sUserAgent.indexOf(“SunOS”)>-1;
if(isSunOS)
{
var reSunOS = new RegExp(“SunOS (\\d+\\.\\d+(?:\\.\\d+)?)”);
reSunOS.test(sUserAgent);
isMinSunOS4 = compareVersions(RegExp["$1"],“4.0″)>=0;
isMinSunOS5 = compareVersions(RegExp["$1"],“5.0″)>=0;
isMinSunOS5_5 = compareVersions(RegExp["$1"],“5.5″)>=0;
}
}
No comments yet.
