Created
May 13, 2019 08:45
-
-
Save AbhilashDawar/c7f13129f5047327df54fe00e4392ceb to your computer and use it in GitHub Desktop.
Browser detection with Javascript
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
| var BROWSERS = { | |
| chrome: { | |
| name: "Google Chrome or Chromium", | |
| codes: { | |
| chrome: "Chrome" | |
| }, | |
| supportVersion: 0 | |
| }, | |
| firefox: { | |
| name: "Mozilla Firefox", | |
| codes: { | |
| firefox: "Firefox" | |
| }, | |
| supportVersion: 0 | |
| }, | |
| edge: { | |
| name: "Microsoft Edge", | |
| codes: { | |
| edge: "Edge" | |
| }, | |
| supportVersion: 0 | |
| }, | |
| internetExplorer: { | |
| name: "Microsoft Internet Explorer", | |
| codes: { | |
| trident: "Trident", | |
| msie: "MSIE" | |
| }, | |
| supportVersion: 10 | |
| }, | |
| opera: { | |
| name: "Opera", | |
| codes: { | |
| opera: "Opera", | |
| opr: "OPR" | |
| }, | |
| supportVersion: 0 | |
| }, | |
| safari: { | |
| name: "Apple Safari", | |
| codes: { | |
| safari: "Safari" | |
| }, | |
| supportVersion: 0 | |
| }, | |
| unknown: { | |
| name: "unknown", | |
| code: "" | |
| } | |
| }; | |
| var COMPATIBLE = "compatible"; | |
| var rv = "rv"; | |
| function getVersion(userAgent, browserCode, delimiterBefore, delimiterAfter) { | |
| var versionString = userAgent.substring(userAgent.indexOf(browserCode)); | |
| var index = versionString.indexOf(delimiterBefore) + 1; | |
| return versionString.substring(index, versionString.indexOf(delimiterAfter) > -1 ? versionString.indexOf(delimiterAfter) : versionString.length); | |
| } | |
| (function () { | |
| var userAgent = window.navigator.userAgent; | |
| var browser = { | |
| name: '', | |
| version: '', | |
| compatibilityMode: false, | |
| compatibilityVersion: '' | |
| }; | |
| console.log(userAgent); | |
| if (userAgent.indexOf(BROWSERS.firefox.codes.firefox) > -1) { | |
| // "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0" | |
| browser.name = BROWSERS.firefox.name; | |
| browser.version = getVersion(userAgent, BROWSERS.firefox.codes.firefox, '/', ' '); | |
| } else if (userAgent.indexOf(BROWSERS.opera.codes.opera) > -1 || userAgent.indexOf(BROWSERS.opera.codes.opr) > -1) { | |
| browser.name = BROWSERS.opera.name; | |
| //"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106" | |
| if (userAgent.indexOf(BROWSERS.opera.codes.opera) > -1) { | |
| browser.version = getVersion(userAgent, BROWSERS.opera.codes.opera, '/', ' ');; | |
| } else { | |
| browser.version = getVersion(userAgent, BROWSERS.opera.codes.opr, '/', ' ');; | |
| } | |
| } else if (userAgent.indexOf(BROWSERS.internetExplorer.codes.trident) > -1) { | |
| browser.name = BROWSERS.internetExplorer.name; | |
| // "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko" | |
| var version = getVersion(userAgent, BROWSERS.internetExplorer.codes.trident, '/', ';'); | |
| if (version === '7.0') { | |
| browser.version = getVersion(userAgent, rv, ':', ')'); | |
| } else { | |
| if (userAgent.indexOf(BROWSERS.internetExplorer.codes.msie) > -1) { | |
| browser.version = getVersion(userAgent, BROWSERS.internetExplorer.codes.msie, ' ', ';'); | |
| } | |
| } | |
| /** | |
| * Check if browser running in compatibility mode (simulating an older version) | |
| */ | |
| if (userAgent.indexOf(COMPATIBLE) > -1) { | |
| browser.compatibilityMode = true; | |
| browser.compatibilityVersion = getVersion(userAgent, BROWSERS.internetExplorer.codes.msie, ' ', ';'); | |
| } | |
| /** | |
| * Custom message to user for older version of the application | |
| */ | |
| if (browser.compatibilityMode) { | |
| alert('You are working with developer options turned ON and emulating a different device. Application might not work as expected.'); | |
| if (Number(browser.compatibilityVersion) < BROWSERS.internetExplorer.supportVersion) { | |
| alert('You are working with developer options turned ON and emulating a different device with lower browser version. Application might not work as expected.'); | |
| } | |
| } else if (Number(browser.version) < BROWSERS.internetExplorer.supportVersion) { | |
| alert('You are working in older browser version. Application might not work as expected.'); | |
| } | |
| } else if (userAgent.indexOf(BROWSERS.edge.codes.edge) > -1) { | |
| // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299" | |
| browser.name = BROWSERS.edge.name; | |
| browser.version = getVersion(userAgent, BROWSERS.edge.codes.edge, '/', ' '); | |
| } else if (userAgent.indexOf(BROWSERS.chrome.codes.chrome) > -1) { | |
| browser.name = BROWSERS.chrome.name; | |
| // "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36" | |
| browser.version = getVersion(userAgent, BROWSERS.chrome.codes.chrome, '/', ' '); | |
| } else if (userAgent.indexOf(BROWSERS.safari.codes.safari) > -1) { | |
| browser.name = BROWSERS.safari.name; | |
| // "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306" | |
| browser.version = getVersion(userAgent, BROWSERS.safari.codes.safari, '/', ' '); | |
| } else { | |
| browser.name = BROWSERS.unknown.name; | |
| browser.version = BROWSERS.unknown.code; | |
| } | |
| console.log(browser); | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment