LanceZhang’s Blog

Dear friends, Welcome to my blog.

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;
    }
}

November 6, 2008 - Posted by | JavaScript |

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: