Skip to content

Instantly share code, notes, and snippets.

@alexdevero
Created May 13, 2017 11:21
Show Gist options
  • Save alexdevero/2e276668effb8f2c2b043ab262287d70 to your computer and use it in GitHub Desktop.
Save alexdevero/2e276668effb8f2c2b043ab262287d70 to your computer and use it in GitHub Desktop.
Script for detecting browsers
const BrowserDetect = {
init: () => {
BrowserDetect.browser = BrowserDetect.searchString(BrowserDetect.dataBrowser) || 'Other';
BrowserDetect.version = BrowserDetect.searchVersion(navigator.userAgent) || BrowserDetect.searchVersion(navigator.appVersion) || 'Unknown';
},
searchString: (data) => {
for (let i = 0; i < data.length; i++) {
let dataString = data[i].string;
BrowserDetect.versionSearchString = data[i].subString;
if (dataString.indexOf(data[i].subString) !== -1) {
return data[i].identity;
}
}
},
searchVersion: (dataString) => {
const index = dataString.indexOf(BrowserDetect.versionSearchString);
if (index === -1) {
return;
}
const rv = dataString.indexOf('rv:');
if (BrowserDetect.versionSearchString === 'Trident' && rv !== -1) {
return parseFloat(dataString.substring(rv + 3));
} else {
return parseFloat(dataString.substring(index + BrowserDetect.versionSearchString.length + 1));
}
},
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'
}
]
};
BrowserDetect.init();
console.log('Your browser: ' + BrowserDetect.browser + ', version: ' + BrowserDetect.version + '</b>');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment