Dora
Dora

Reputation: 6980

javascript navigator.appName and userAgent not giving what I want

I'm totally new and just started javascript and playing around with the basic alert()

I'm wondering how are we able to check what browser is being used? All are navigator object doesn't seem to give out what is wanted. If I use appName it gives me out Netscape in everything and I believe all know that.

Is there a way I can make the alert(); to check and show either just IE, Firefox, Chrome, something like that?

If using userAgent, it gives out too much info...

Upvotes: 1

Views: 5780

Answers (2)

sohel khalifa
sohel khalifa

Reputation: 5578

Try with this:

if( navigator.userAgent.toLowerCase().indexOf('chrome') > -1){
   // Google chrome
}
else if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){
   // Firefox.
}
else if(navigator.userAgent.toLowerCase().indexOf('msie') > -1){
   // MSIE
}
else if(navigator.userAgent.toLowerCase().indexOf('safari') > -1){
   // Safari
}

Upvotes: 0

whitneyit
whitneyit

Reputation: 1226

Firstly, you shouldn't be trying to do browser detection, that being said, all browsers choose to implement both the userAgent and the appName however they want.

To correct this, you should try the following code

   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: "Chrome",
            identity: "Chrome"
        },
        {   string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            prop: window.opera,
            identity: "Opera",
            versionSearch: "Version"
        },
        {
            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.userAgent,
               subString: "iPhone",
               identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

};
BrowserDetect.init();

This code was taken from quirksmode by the way.

To use this code you can just do the following

var version = BrowserDetect.version;
var OS = BBrowserDetect.OS;
var browser = BBrowserDetect.browser;

Upvotes: 2

Related Questions