devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
57 lines (56 loc) • 2.17 kB
JavaScript
/**
* DevExtreme (core/utils/browser.js)
* Version: 18.2.18
* Build date: Tue Oct 18 2022
*
* Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
var extend = require("./extend").extend,
windowUtils = require("./window"),
navigator = windowUtils.getNavigator();
var webkitRegExp = /(webkit)[ \/]([\w.]+)/,
ieRegExp = /(msie) (\d{1,2}\.\d)/,
ie11RegExp = /(trident).*rv:(\d{1,2}\.\d)/,
msEdge = /(edge)\/((\d+)?[\w.]+)/,
safari = /(safari)/i,
mozillaRegExp = /(mozilla)(?:.*? rv:([\w.]+))/;
var browserFromUA = function(ua) {
ua = ua.toLowerCase();
var result = {},
matches = ieRegExp.exec(ua) || ie11RegExp.exec(ua) || msEdge.exec(ua) || ua.indexOf("compatible") < 0 && mozillaRegExp.exec(ua) || webkitRegExp.exec(ua) || [],
browserName = matches[1],
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+)/i.exec(ua);
browserVersion = browserVersion && browserVersion[1]
} else {
if (ua.indexOf("fxios") >= 0) {
browserName = "mozilla";
browserVersion = /FxiOS\/(\d+\.\d+)/i.exec(ua);
browserVersion = browserVersion && browserVersion[1]
} else {
if (safari.exec(ua)) {
browserName = "safari";
browserVersion = /Version\/([0-9.]+)/i.exec(ua);
browserVersion = browserVersion && browserVersion[1]
}
}
}
}
if ("trident" === browserName || "edge" === browserName) {
browserName = "msie"
}
if (browserName) {
result[browserName] = true;
result.version = browserVersion
}
return result
};
module.exports = extend({
_fromUA: browserFromUA
}, browserFromUA(navigator.userAgent));