104 lines
3.0 KiB
JavaScript
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
|
|
})
|