Centre for Software Practice

the blog
Welcome to Centre for Software Practice Sign in | Join | Help

Browser Detection

var BrowserDetect = {

    init: function () {

        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";

        this.version = this.searchVersion(navigator.userAgent)

            || this.searchVersion(navigator.appVersion)

            || "an unknown version";

        this.OS = this.searchString(this.dataOS) || "an unknown OS";

    },

    searchString: function (data) {

        for (var i=0;i<data.length;i++)    {

            var dataString = data[i].string;

            var dataProp = data[i].prop;

            this.versionSearchString = data[i].versionSearch || data[i].identity;

            if (dataString) {

                if (dataString.indexOf(data[i].subString) != -1)

                    return data[i].identity;

            }

            else if (dataProp)

                return data[i].identity;

        }

    },

    searchVersion: function (dataString) {

        var index = dataString.indexOf(this.versionSearchString);

        if (index == -1) return;

        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));

    },

    dataBrowser: [

        {     string: navigator.userAgent,

            subString: "OmniWeb",

            versionSearch: "OmniWeb/",

            identity: "OmniWeb"

        },

        {

            string: navigator.vendor,

            subString: "Apple",

            identity: "Safari"

        },

        {

            prop: window.opera,

            identity: "Opera"

        },

        {

            string: navigator.vendor,

            subString: "iCab",

            identity: "iCab"

        },

        {

            string: navigator.vendor,

            subString: "KDE",

            identity: "Konqueror"

        },

        {

            string: navigator.userAgent,

            subString: "Firefox",

            identity: "Firefox"

        },

        {

            string: navigator.vendor,

            subString: "Camino",

            identity: "Camino"

        },

        {        // for newer Netscapes (6+)

            string: navigator.userAgent,

            subString: "Netscape",

            identity: "Netscape"

        },

        {

            string: navigator.userAgent,

            subString: "MSIE",

            identity: "Explorer",

            versionSearch: "MSIE"

        },

        {

            string: navigator.userAgent,

            subString: "Gecko",

            identity: "Mozilla",

            versionSearch: "rv"

        },

        {         // for older Netscapes (4-)

            string: navigator.userAgent,

            subString: "Mozilla",

            identity: "Netscape",

            versionSearch: "Mozilla"

        }

    ],

    dataOS : [

        {

            string: navigator.platform,

            subString: "Win",

            identity: "Windows"

        },

        {

            string: navigator.platform,

            subString: "Mac",

            identity: "Mac"

        },

        {

            string: navigator.platform,

            subString: "Linux",

            identity: "Linux"

        }

    ]

};

BrowserDetect.init();

About This Page

Title: Browser Detection
Moderated By:
Created: 08-29-2007, 11:32 AM
Modified: 08-29-2007, 11:32 AM
Last Modified By: TimHenstridge
Revision Number: 1

Common Tasks

Wiki

Powered by Community Server (Personal Edition), by Telligent Systems