Files
website/assets/js/browser.min.js
T
2022-07-07 11:54:43 +02:00

104 lines
3.0 KiB
JavaScript

/* browser.js v1.0 | @ajlkn | MIT licensed */
var browser = (function () {
'use strict'
var e = {
name: null,
version: null,
os: null,
osVersion: null,
touch: null,
mobile: null,
_canUse: null,
canUse: function (n) {
e._canUse || (e._canUse = document.createElement('div'))
var o = e._canUse.style,
r = n.charAt(0).toUpperCase() + n.slice(1)
return n in o || 'Moz' + r in o || 'Webkit' + r in o || 'O' + r in o || 'ms' + r in o
},
init: function () {
var n,
o,
r,
i,
t = navigator.userAgent
for (
n = 'other',
o = 0,
r = [
['firefox', /Firefox\/([0-9\.]+)/],
['bb', /BlackBerry.+Version\/([0-9\.]+)/],
['bb', /BB[0-9]+.+Version\/([0-9\.]+)/],
['opera', /OPR\/([0-9\.]+)/],
['opera', /Opera\/([0-9\.]+)/],
['edge', /Edge\/([0-9\.]+)/],
['safari', /Version\/([0-9\.]+).+Safari/],
['chrome', /Chrome\/([0-9\.]+)/],
['ie', /MSIE ([0-9]+)/],
['ie', /Trident\/.+rv:([0-9]+)/],
],
i = 0;
i < r.length;
i++
)
if (t.match(r[i][1])) {
;(n = r[i][0]), (o = parseFloat(RegExp.$1))
break
}
for (
e.name = n,
e.version = o,
n = 'other',
o = 0,
r = [
[
'ios',
/([0-9_]+) like Mac OS X/,
function (e) {
return e.replace('_', '.').replace('_', '')
},
],
[
'ios',
/CPU like Mac OS X/,
function (e) {
return 0
},
],
['wp', /Windows Phone ([0-9\.]+)/, null],
['android', /Android ([0-9\.]+)/, null],
[
'mac',
/Macintosh.+Mac OS X ([0-9_]+)/,
function (e) {
return e.replace('_', '.').replace('_', '')
},
],
['windows', /Windows NT ([0-9\.]+)/, null],
['bb', /BlackBerry.+Version\/([0-9\.]+)/, null],
['bb', /BB[0-9]+.+Version\/([0-9\.]+)/, null],
['linux', /Linux/, null],
['bsd', /BSD/, null],
['unix', /X11/, null],
],
i = 0;
i < r.length;
i++
)
if (t.match(r[i][1])) {
;(n = r[i][0]), (o = parseFloat(r[i][2] ? r[i][2](RegExp.$1) : RegExp.$1))
break
}
;(e.os = n),
(e.osVersion = o),
(e.touch = 'wp' == e.os ? navigator.msMaxTouchPoints > 0 : !!('ontouchstart' in window)),
(e.mobile = 'wp' == e.os || 'android' == e.os || 'ios' == e.os || 'bb' == e.os)
},
}
return e.init(), e
})()
!(function (e, n) {
'function' == typeof define && define.amd ? define([], n) : 'object' == typeof exports ? (module.exports = n()) : (e.browser = n())
})(this, function () {
return browser
})