CFLib.org – Common Function Library Project

browserDetect()

Last updated September 30, 2005
Download UDF

author

John Bartlett                                     John Bartlett

Version: 1 | Requires: ColdFusion 5 | Library: UtilityLib

Description:
Detects what browser the user is using and version number. If the HTTP_USER_AGENT is stripped by a firewall or unknown (edited) Agent ID string, an "Unknown" is returned.

Return Values:
Returns a string.

Example:

<CFOUTPUT>
#BrowserDetect()#
</CFOUTPUT>

Parameters:

No arguments.

Full UDF Source:

<cfscript>
/**
* Detects 40+ browsers.
*
* @return Returns a string.
* @author John Bartlett (jbartlett@strangejourney.net)
* @version 1, September 30, 2005
*/

function browserDetect() {
    var loc=0;
    var i=0;
    var b=0;
    var tmp="";
    var browserList="";
    var currBrowser="";
    
    // Avant Browser (Not all Avant browsers contain "Avant" in the string)
    loc=findNoCase("Avant",CGI.HTTP_USER_AGENT);
    if(loc GT 0) {
        loc=listFindNoCase(CGI.HTTP_USER_AGENT,"MSIE"," ");
        if(loc GT 0) {
            tmp=listGetAt(CGI.HTTP_USER_AGENT,loc + 1," ");
            return "Avant " & left(tmp,len(tmp) - 1);
        }
    }

    // PocketPC
    if(findNoCase("Windows CE",CGI.HTTP_USER_AGENT)) return "PocketPC";

    // Misc (browser x.x)
    browserList="Acorn Browse,Check&Get,iCab,Netsurf,Opera,Oregano,SIS";
    for (b=1; b lte listLen(BrowserList); b=b+1) {
        currBrowser=listGetAt(browserList,b);
        loc=listFindNoCase(CGI.HTTP_USER_AGENT,currBrowser," ");
        if(loc GT 0) return currBrowser & " " & listGetAt(CGI.HTTP_USER_AGENT,loc + 1," ");
    }

    // Misc (browser/x.x)
    BrowserList="Amaya,AmigaVoyager,Amiga-AWeb,Camino,Chimera,Contiki,cURL,Dillo,DocZilla,edbrowse,Emacs-W3,Epiphany,Firefox,IBrowse,iCab,K-Meleon,Konqueror,Lynx,Mosaic,NetPositive,Netscape,OmniWeb,Opera,Safari,SWB,Sylera,W3CLineMode,w3m,WebTV";
    for (b=1; b LTE ListLen(BrowserList); b=b+1) {
        currBrowser=listGetAt(browserList,b);
        loc=findNoCase(currBrowser,CGI.HTTP_USER_AGENT);
        if(loc GT 0) {
            // Locate Browser version in string
            for(i=1;i lte listLen(CGI.HTTP_USER_AGENT," ");i=i+1) {
                if(lCase(left(listGetAt(CGI.HTTP_USER_AGENT,i," "),len(currBrowser) + 1)) eq "#CurrBrowser#/") return currBrowser & " " & listLast(listGetAt(CGI.HTTP_USER_AGENT,i," "),"/");
            }
        }
    }

    // Misc (browser, no version)
    browserList="BrowseX,ELinks,Links,OffByOne,BlackBerry";
    for(b=1; b lte listLen(BrowserList); b=b+1) {
        currBrowser=listGetAt(browserList,b);
        if(findNoCase(currBrowser,CGI.HTTP_USER_AGENT) gt 0) return currBrowser;
    }

    // Mozila (must be done after Firefox, Netscape, and other Mozila clones)
    loc=findNoCase("Gecko",CGI.HTTP_USER_AGENT);
    if(loc GT 0) {
        // Locate revision number in string
        for(i=1;i lte listLen(CGI.HTTP_USER_AGENT," ");i=i+1) {
            if(lCase(left(listGetAt(CGI.HTTP_USER_AGENT,i," "),3)) eq "rv:") return "Mozilla " & val(listLast(ListGetAt(CGI.HTTP_USER_AGENT,i," "),":"));
        }
    }

    // IE (Must be last due to other browsers "spoofing" it.
    loc=listFindNoCase(CGI.HTTP_USER_AGENT,"MSIE"," ");
    if(Loc GT 0) {
        tmp=listGetAt(CGI.HTTP_USER_AGENT,loc + 1," ");
        return "MSIE " & left(tmp,len(tmp) - 1);
    }

    // Unable to detect browser
    return "Unknown";
}
</cfscript>

Search CFLib.org


Latest Additions

Raymond Compton Raymond Compton added
structBlend
19 day(s) ago

Duncan Duncan added
IsZIPUK
19 day(s) ago

Todd Sharp Todd Sharp added
getTagContentAll
25 day(s) ago

Gerald Guido Gerald Guido added
ListReturnDuplicat...
1 month(s) ago

Gerald Guido Gerald Guido added
ListReturnDuplicat...
1 month(s) ago

Created by Raymond Camden / Design by Justin Johnson