@atlaskit/editor-plugin-feedback-dialog
Version:
Feedback dialog plugin for @atlaskit/editor-core
88 lines (87 loc) • 3.5 kB
JavaScript
/**
* Inspired from:
* https://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
*/
var getBrowserInfo = function getBrowserInfo(nAgt) {
var browserName;
var browserVersion;
var nameOffset;
var verOffset;
var index;
// In Opera 15+, version is after "OPR/"
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
if ((verOffset = nAgt.indexOf('OPR/')) !== -1) {
browserName = 'Opera';
browserVersion = nAgt.substring(verOffset + 4);
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
} else if ((verOffset = nAgt.indexOf('Opera')) !== -1) {
// In older Opera, version is after "Opera" or after "Version"
browserName = 'Opera';
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
if ((verOffset = nAgt.indexOf('Version')) !== -1) {
browserVersion = nAgt.substring(verOffset + 8);
} else {
browserVersion = nAgt.substring(verOffset + 6);
}
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
} else if ((verOffset = nAgt.indexOf('MSIE')) !== -1) {
// In MSIE, version is after "MSIE" in userAgent
browserName = 'Microsoft Internet Explorer';
browserVersion = nAgt.substring(verOffset + 5);
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
} else if ((verOffset = nAgt.indexOf('Chrome')) !== -1) {
// In Chrome, version is after "Chrome"
browserName = 'Chrome';
browserVersion = nAgt.substring(verOffset + 7);
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
} else if ((verOffset = nAgt.indexOf('Safari')) !== -1) {
// In Safari, version is after "Safari" or after "Version"
browserName = 'Safari';
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
if ((verOffset = nAgt.indexOf('Version')) !== -1) {
browserVersion = nAgt.substring(verOffset + 8);
} else {
browserVersion = nAgt.substring(verOffset + 7);
}
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
} else if ((verOffset = nAgt.indexOf('Firefox')) !== -1) {
// In Firefox, version is after "Firefox"
browserName = 'Firefox';
browserVersion = nAgt.substring(verOffset + 8);
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
} else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {
// In most other browsers, "name/version" is at the end of userAgent
browserName = nAgt.substring(nameOffset, verOffset);
browserVersion = nAgt.substring(verOffset + 1);
if (browserName.toLowerCase() === browserName.toUpperCase()) {
browserName = navigator.appName;
}
} else {
browserName = navigator.appName;
browserVersion = '' + parseFloat(navigator.appVersion);
}
// trim the versionStr string at semicolon/space if present
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
if ((index = browserVersion.indexOf(';')) !== -1) {
browserVersion = browserVersion.substring(0, index);
}
// Ignored via go/ees005
// eslint-disable-next-line no-cond-assign
if ((index = browserVersion.indexOf(' ')) !== -1) {
browserVersion = browserVersion.substring(0, index);
}
return "".concat(browserName, " ").concat(browserVersion);
};
export default getBrowserInfo;