Skip to content

Instantly share code, notes, and snippets.

@kjbrum
Last active November 17, 2020 23:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kjbrum/0e1244ccf770cf77effa3f42fadad62e to your computer and use it in GitHub Desktop.
Save kjbrum/0e1244ccf770cf77effa3f42fadad62e to your computer and use it in GitHub Desktop.
Detect the current browser and version using the user agent.
/**
* browserdetect.js
* Detect the current browser and version using the user agent.
* Credit: https://stackoverflow.com/a/13480430/6272119
*/
var BrowserDetect = {
dataBrowser: [
{ string: navigator.userAgent, subString: "Edge", identity: "MS Edge" },
{ string: navigator.userAgent, subString: "MSIE", identity: "Explorer" },
{ string: navigator.userAgent, subString: "Trident", identity: "Explorer" },
{ string: navigator.userAgent, subString: "Firefox", identity: "Firefox" },
{ string: navigator.userAgent, subString: "Opera", identity: "Opera" },
{ string: navigator.userAgent, subString: "OPR", identity: "Opera" },
{ string: navigator.userAgent, subString: "Chrome", identity: "Chrome" },
{ string: navigator.userAgent, subString: "Safari", identity: "Safari" }
],
init: function() {
this.browser = this.searchString(this.dataBrowser) || "Other";
this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown";
},
searchString: function(data) {
for (var i = 0; i < data.length; i++) {
var dataString = data[i].string;
this.versionSearchString = data[i].subString;
if (dataString.indexOf(data[i].subString) !== -1) {
return data[i].identity;
}
}
},
searchVersion: function(dataString) {
var index = dataString.indexOf(this.versionSearchString);
if (index === -1) {
return;
}
var rv = dataString.indexOf("rv:");
if (this.versionSearchString === "Trident" && rv !== -1) {
return parseFloat(dataString.substring(rv + 3));
} else {
return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
}
}
};
BrowserDetect.init();
// Add browser tests
var browser_tests = {
'chrome': function() { return BrowserDetect.browser == 'Chrome'; },
'firefox': function() { return BrowserDetect.browser == 'Firefox'; },
'safari': function() { return BrowserDetect.browser == 'Safari'; },
'edge': function() { return BrowserDetect.browser == 'MS Edge'; },
'ie': function() { return BrowserDetect.browser == 'Explorer'; },
'ie11': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version == 11); },
'lt-ie11': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 11); },
'gt-ie10': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version > 10); },
'ie10': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version == 10); },
'lt-ie10': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 10); },
'gt-ie9': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version > 9); },
'ie9': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version == 9); },
'lt-ie9': function() { return (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 9); },
'mobile': function() { return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)); }
}
Modernizr.addTest(browser_tests);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment