devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
59 lines (58 loc) • 2.25 kB
JavaScript
/**
* DevExtreme (esm/core/utils/browser.js)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
extend
} from "./extend";
import {
getNavigator
} from "./window";
var navigator = getNavigator();
var webkitRegExp = /(webkit)[ /]([\w.]+)/;
var ieRegExp = /(msie) (\d{1,2}\.\d)/;
var ie11RegExp = /(trident).*rv:(\d{1,2}\.\d)/;
var msEdge = /(edge)\/((\d+)?[\w.]+)/;
var mozillaRegExp = /(mozilla)(?:.*? rv:([\w.]+))/;
var browserFromUA = function(ua) {
ua = ua.toLowerCase();
var result = {};
var matches = ieRegExp.exec(ua) || ie11RegExp.exec(ua) || msEdge.exec(ua) || ua.indexOf("compatible") < 0 && mozillaRegExp.exec(ua) || webkitRegExp.exec(ua) || [];
var browserName = matches[1];
var browserVersion = matches[2];
if ("webkit" === browserName) {
result.webkit = true;
if (ua.indexOf("chrome") >= 0 || ua.indexOf("crios") >= 0) {
browserName = "chrome";
browserVersion = /(?:chrome|crios)\/(\d+\.\d+)/.exec(ua);
browserVersion = browserVersion && browserVersion[1]
} else if (ua.indexOf("fxios") >= 0) {
browserName = "mozilla";
browserVersion = /fxios\/(\d+\.\d+)/.exec(ua);
browserVersion = browserVersion && browserVersion[1]
} else if (ua.indexOf("safari") >= 0 && /version|phantomjs/.test(ua)) {
browserName = "safari";
browserVersion = /(?:version|phantomjs)\/([0-9.]+)/.exec(ua);
browserVersion = browserVersion && browserVersion[1]
} else {
browserName = "unknown";
browserVersion = /applewebkit\/([0-9.]+)/.exec(ua);
browserVersion = browserVersion && browserVersion[1]
}
}
if ("trident" === browserName || "edge" === browserName) {
browserName = "msie"
}
if (browserName) {
result[browserName] = true;
result.version = browserVersion
}
return result
};
export default extend({
_fromUA: browserFromUA
}, browserFromUA(navigator.userAgent));