amos-tool
Version:
amos ui tool
78 lines (68 loc) • 2.32 kB
JavaScript
;
var _utils = require("./utils"), _consts = require("./consts"), _defaultBrowsers = [ "firefox/51.0", "chrome/56" ], _muiltBrowsers = [ "firefox/", "chrome/" ], calcIeSerails = function(s, e, r, i) {
var t, o = s.indexOf("compatible") > -1 && s.indexOf("msie") > -1, n = s.indexOf("edge") > -1 && !o, a = s.indexOf("trident") > -1 && s.indexOf("rv:11.0") > -1, c = !1;
if (o) {
new RegExp("msie (\\d+\\.\\d+);").test(s);
var l = parseFloat(RegExp.$1);
t = 7 == l ? 7 : 8 == l ? 8 : 9 == l ? 9 : 10 == l ? 10 : 6;
} else t = n ? 12 : a ? 11 : -1;
switch (r) {
case _consts.GREATER:
c = t > i;
break;
case _consts.EQUAL:
c = t == i;
break;
case _consts.LESS:
c = t < i;
break;
case _consts.GREATER_EQUAL:
c = t >= i;
break;
case _consts.LESS_EQUAL:
c = t <= i;
}
return c;
}, calcBrowserVersion = function(s, e, r, i) {
var t = !1;
if (s.indexOf(e) > -1) switch (r) {
case _consts.GREATER:
t = s.split(e)[1].split(".")[0] > i;
break;
case _consts.EQUAL:
t = s.split(e)[1].split(".")[0] == i;
break;
case _consts.LESS:
t = s.split(e)[1].split(".")[0] < i;
break;
case _consts.GREATER_EQUAL:
t = s.split(e)[1].split(".")[0] >= i;
break;
case _consts.LESS_EQUAL:
t = s.split(e)[1].split(".")[0] <= i;
} else t = calcIeSerails(s, e, r, i);
return console.log("supported:", t), t;
}, browserSupport = function(s, e) {
if (navigator) {
var r = navigator.userAgent;
if (!_utils.isEmpty(r)) if (r = r.toLowerCase(), _utils.isEmpty(e)) {
var i = s || _defaultBrowsers;
if (!_utils.isEmpty(i)) {
if (_utils.isArray(i)) return _utils.some(i, function(s) {
return console.log("non matchs. target browser is:", s), r.indexOf(s) > -1;
});
if (_utils.isString(i)) return r.indexOf(i) > -1;
}
} else {
var t = s || _muiltBrowsers;
if (!_utils.isEmpty(t)) {
if (_utils.isArray(t)) return _utils.some(t, function(s) {
return console.log("matchs. target browser is:", s), calcBrowserVersion(r, s, e[s].limit, e[s].version);
});
if (_utils.isString(t)) return calcBrowserVersion(r, t, e.limit, e.version);
}
}
}
return !1;
};
module.exports = browserSupport;