Last active
November 17, 2020 23:10
-
-
Save kjbrum/0e1244ccf770cf77effa3f42fadad62e to your computer and use it in GitHub Desktop.
Detect the current browser and version using the user agent.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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