Update to latest version 0.7.34 + display the getResult() data in user-agent playground

This commit is contained in:
Faisal Salman 2023-03-13 22:03:57 +07:00
parent 93a11d3c9b
commit 6e98b2e975
3 changed files with 84 additions and 80 deletions

View File

@ -81,9 +81,12 @@
{UAParser.js} abstracts away the hassle of User-Agent detection by turning them into a set of simple & meaningful data. As an example, this is what we get from your browser's User-Agent information: </p> {UAParser.js} abstracts away the hassle of User-Agent detection by turning them into a set of simple & meaningful data. As an example, this is what we get from your browser's User-Agent information: </p>
<div class="ui black massive label"><p id="ua-txt"></p><button id="btn-clipboard" class="ui right floated labeled icon violet tiny button" data-clipboard-target="#ua-txt"><i class="clipboard icon"></i>COPY TO CLIPBOARD</button></div> <div class="ui black massive label"><p id="ua-txt"></p><button id="btn-clipboard" class="ui right floated labeled icon violet tiny button" data-clipboard-target="#ua-txt"><i class="clipboard icon"></i>COPY TO CLIPBOARD</button></div>
</div> </div>
<div class="ui basic segment">
<p>
{UAParser.js} will transforms it into a well-structured data: </p>
<pre class="ui inverted segment"><code id="ua-result"></code></pre>
</div>
<div id="demo-result" class="ui equal width stackable internally celled grid"> <div id="demo-result" class="ui equal width stackable internally celled grid">
<p>
{UAParser.js} reads this as: </p>
<div class="row"> <div class="row">
<div class="column"> <div class="column">
<div class="ui center aligned animated icon"> <div class="ui center aligned animated icon">

View File

@ -16,10 +16,12 @@ $(document)
var updateDemo = function (ua) { var updateDemo = function (ua) {
var result = UAParser(ua); var result = UAParser(ua);
if(!result) return;
$('#ua-txt').transition('flip vertical', function () { $('#ua-txt').transition('flip vertical', function () {
$(this).text(result.ua); $(this).text(result.ua);
$(this).transition('flip vertical'); $(this).transition('flip vertical');
}); });
$('#ua-result').text(JSON.stringify(result, null, " "));
$('#demo-result').transition('fly up', function () { $('#demo-result').transition('fly up', function () {
if (result.browser.name) { if (result.browser.name) {
var version = result.browser.version!==undefined?result.browser.version:'-'; var version = result.browser.version!==undefined?result.browser.version:'-';
@ -84,7 +86,7 @@ $(document)
$('#device-txt').text('-'); $('#device-txt').text('-');
$('#device-img').attr('src', 'images/companies/default.png'); $('#device-img').attr('src', 'images/companies/default.png');
} }
if (result.gpu.vendor) { /* if (result.gpu.vendor) {
var vendor = result.gpu.vendor!=undefined?result.gpu.vendor:'-'; var vendor = result.gpu.vendor!=undefined?result.gpu.vendor:'-';
var model = result.gpu.model!==undefined?result.gpu.model:'-'; var model = result.gpu.model!==undefined?result.gpu.model:'-';
$('#gpu-txt').html('<span class="ui large black label">' + vendor + '</span><span class="ui large black label">' + model + '</span>'); $('#gpu-txt').html('<span class="ui large black label">' + vendor + '</span><span class="ui large black label">' + model + '</span>');
@ -93,7 +95,7 @@ $(document)
}); });
} else { } else {
$('#gpu-txt').text('-'); $('#gpu-txt').text('-');
} }*/
$(this).transition('fly up', function () { $(this).transition('fly up', function () {
$(this).transition('pulse'); $(this).transition('pulse');
}); });
@ -124,9 +126,9 @@ $(document)
return false; return false;
} }
}); });
if (!uaparser.getGPU().vendor) { // if (!uaparser.getGPU().vendor) {
$('#gpu-divider,#gpu-segment').hide(); $('#gpu-divider,#gpu-segment').hide();
} // }
$('.ui.rating').rating(); $('.ui.rating').rating();
$('#showcase img').popup({ $('#showcase img').popup({

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
/* UAParser.js v0.7.33-gpu-experimental /* UAParser.js v0.7.34
Copyright © 2012-2021 Faisal Salman <f@faisalman.com> Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
MIT License *//* MIT License *//*
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
@ -17,7 +17,7 @@
///////////// /////////////
var LIBVERSION = '0.7.33-gpu-experimental', var LIBVERSION = '0.7.34',
EMPTY = '', EMPTY = '',
UNKNOWN = '?', UNKNOWN = '?',
FUNC_TYPE = 'function', FUNC_TYPE = 'function',
@ -56,9 +56,12 @@
SAMSUNG = 'Samsung', SAMSUNG = 'Samsung',
SHARP = 'Sharp', SHARP = 'Sharp',
SONY = 'Sony', SONY = 'Sony',
VIERA = 'Viera',
XIAOMI = 'Xiaomi', XIAOMI = 'Xiaomi',
ZEBRA = 'Zebra', ZEBRA = 'Zebra',
FACEBOOK = 'Facebook'; FACEBOOK = 'Facebook',
CHROMIUM_OS = 'Chromium OS',
MAC_OS = 'Mac OS';
/////////// ///////////
// Helper // Helper
@ -116,6 +119,7 @@
// try matching uastring with regexes // try matching uastring with regexes
while (j < regex.length && !matches) { while (j < regex.length && !matches) {
if (!regex[j]) { break; }
matches = regex[j++].exec(ua); matches = regex[j++].exec(ua);
if (!!matches) { if (!!matches) {
@ -175,14 +179,8 @@
// String map // String map
////////////// //////////////
var gpuVendorMap = { // Safari < 3.0
'AMD' : 'Radeon', var oldSafariMap = {
'ARM' : 'Mali',
'NVIDIA' : 'GeForce',
'Qualcomm' : 'Adreno'
},
// Safari < 3.0
oldSafariMap = {
'1.0' : '/8', '1.0' : '/8',
'1.2' : '/1', '1.2' : '/1',
'1.3' : '/3', '1.3' : '/3',
@ -238,7 +236,7 @@
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
/(weibo)__([\d\.]+)/i // Weibo /(weibo)__([\d\.]+)/i // Weibo
], [NAME, VERSION], [ ], [NAME, VERSION], [
@ -289,6 +287,8 @@
// WebView // WebView
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
], [[NAME, FACEBOOK], VERSION], [ ], [[NAME, FACEBOOK], VERSION], [
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
/safari (line)\/([\w\.]+)/i, // Line App for iOS /safari (line)\/([\w\.]+)/i, // Line App for iOS
/\b(line)\/([\w\.]+)\/iab/i, // Line App for Android /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
/(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram /(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram
@ -335,7 +335,8 @@
// Other // Other
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
// Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
/(links) \(([\w\.]+)/i // Links /(links) \(([\w\.]+)/i, // Links
/panasonic;(viera)/i // Panasonic Viera
], [NAME, VERSION], [ ], [NAME, VERSION], [
/(cobalt)\/([\w\.]+)/i // Cobalt /(cobalt)\/([\w\.]+)/i // Cobalt
@ -378,13 +379,12 @@
////////////////////////// //////////////////////////
// MOBILES & TABLETS // MOBILES & TABLETS
// Ordered by popularity
///////////////////////// /////////////////////////
// Samsung // Samsung
/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i, /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
/samsung[- ]([-\w]+)/i, /samsung[- ]([-\w]+)/i,
/sec-(sgh\w+)/i /sec-(sgh\w+)/i
], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
@ -399,6 +399,10 @@
/(macintosh);/i /(macintosh);/i
], [MODEL, [VENDOR, APPLE]], [ ], [MODEL, [VENDOR, APPLE]], [
// Sharp
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
// Huawei // Huawei
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [ ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
@ -502,7 +506,7 @@
// ZTE // ZTE
/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
/(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [ ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
// Acer // Acer
@ -514,10 +518,6 @@
/\bmz-([-\w]{2,})/i /\bmz-([-\w]{2,})/i
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [ ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
// Sharp
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
// MIXED // MIXED
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
@ -529,6 +529,7 @@
/(oppo) ?([\w ]+) bui/i // OPPO /(oppo) ?([\w ]+) bui/i // OPPO
], [VENDOR, MODEL, [TYPE, MOBILE]], [ ], [VENDOR, MODEL, [TYPE, MOBILE]], [
/(kobo)\s(ereader|touch)/i, // Kobo
/(archos) (gamepad2?)/i, // Archos /(archos) (gamepad2?)/i, // Archos
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
/(kindle)\/([\w\.]+)/i, // Kindle /(kindle)\/([\w\.]+)/i, // Kindle
@ -598,20 +599,6 @@
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [ ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
///////////////////
// CONSOLES
///////////////////
/(ouya)/i, // Ouya
/(nintendo) ([wids3utch]+)/i // Nintendo
], [VENDOR, MODEL, [TYPE, CONSOLE]], [
/droid.+; (shield) bui/i // Nvidia
], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
/(playstation [345portablevi]+)/i // Playstation
], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [
/\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
/////////////////// ///////////////////
// SMARTTVS // SMARTTVS
/////////////////// ///////////////////
@ -635,23 +622,41 @@
], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [ ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
/(mitv-\w{5}) bui/i // Xiaomi /(mitv-\w{5}) bui/i // Xiaomi
], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [ ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
/Hbbtv.*(technisat) (.*);/i // TechniSAT
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i // HbbTV devices /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [ ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
], [[TYPE, SMARTTV]], [ ], [[TYPE, SMARTTV]], [
///////////////////
// CONSOLES
///////////////////
/(ouya)/i, // Ouya
/(nintendo) ([wids3utch]+)/i // Nintendo
], [VENDOR, MODEL, [TYPE, CONSOLE]], [
/droid.+; (shield) bui/i // Nvidia
], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
/(playstation [345portablevi]+)/i // Playstation
], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [
/\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
/////////////////// ///////////////////
// WEARABLES // WEARABLES
/////////////////// ///////////////////
/((pebble))app/i // Pebble /((pebble))app/i // Pebble
], [VENDOR, MODEL, [TYPE, WEARABLE]], [ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
/droid.+; (glass) \d/i // Google Glass /droid.+; (glass) \d/i // Google Glass
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [ ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
/droid.+; (wt63?0{2,3})\)/i /droid.+; (wt63?0{2,3})\)/i
], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [ ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
/(quest( 2)?)/i // Oculus Quest /(quest( 2| pro)?)/i // Oculus Quest
], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [ ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
/////////////////// ///////////////////
@ -696,13 +701,6 @@
], [VERSION, NAME] ], [VERSION, NAME]
], ],
gpu : [[
/(intel|nvidia|sis|amd|apple|powervr)\W? (.+)/i, // Intel/NVIDIA/SiS/AMD/Apple/PowerVR
/(((?:radeon|adreno|geforce|mali).+))/i, // AMD Radeon/NVIDIA GeForce/Qualcomm Adreno/ARM Mali
], [[VENDOR, strMapper, gpuVendorMap], [MODEL, / ?(\(.+?\)| direct3d.+| opengl.+|\/.+$| gpu$)/gi, EMPTY]]
],
os : [[ os : [[
// Windows // Windows
@ -721,7 +719,7 @@
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [ ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
/(mac os x) ?([\w\. ]*)/i, /(mac os x) ?([\w\. ]*)/i,
/(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
// Mobile OSes // Mobile OSes
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
@ -740,12 +738,19 @@
/web0s;.+rt(tv)/i, /web0s;.+rt(tv)/i,
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
], [VERSION, [NAME, 'webOS']], [ ], [VERSION, [NAME, 'webOS']], [
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
], [VERSION, [NAME, 'watchOS']], [
// Google Chromecast // Google Chromecast
/crkey\/([\d\.]+)/i // Google Chromecast /crkey\/([\d\.]+)/i // Google Chromecast
], [VERSION, [NAME, CHROME+'cast']], [ ], [VERSION, [NAME, CHROME+'cast']], [
/(cros) [\w]+ ([\w\.]+\w)/i // Chromium OS /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
], [[NAME, 'Chromium OS'], VERSION],[ ], [[NAME, CHROMIUM_OS], VERSION],[
// Smart TVs
/panasonic;(viera)/i, // Panasonic Viera
/(netrange)mmh/i, // Netrange
/(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
// Console // Console
/(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
@ -787,16 +792,21 @@
return new UAParser(ua, extensions).getResult(); return new UAParser(ua, extensions).getResult();
} }
var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY); var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;
var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);
var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;
var _rgxmap = extensions ? extend(regexes, extensions) : regexes; var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
var _renderer;
this.getBrowser = function () { this.getBrowser = function () {
var _browser = {}; var _browser = {};
_browser[NAME] = undefined; _browser[NAME] = undefined;
_browser[VERSION] = undefined; _browser[VERSION] = undefined;
rgxMapper.call(_browser, _ua, _rgxmap.browser); rgxMapper.call(_browser, _ua, _rgxmap.browser);
_browser.major = majorize(_browser.version); _browser[MAJOR] = majorize(_browser[VERSION]);
// Brave-specific detection
if (_navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
_browser[NAME] = 'Brave';
}
return _browser; return _browser;
}; };
this.getCPU = function () { this.getCPU = function () {
@ -811,6 +821,14 @@
_device[MODEL] = undefined; _device[MODEL] = undefined;
_device[TYPE] = undefined; _device[TYPE] = undefined;
rgxMapper.call(_device, _ua, _rgxmap.device); rgxMapper.call(_device, _ua, _rgxmap.device);
if (!_device[TYPE] && _uach && _uach.mobile) {
_device[TYPE] = MOBILE;
}
// iPadOS-specific detection: identified as Mac, but has some iOS-only properties
if (_device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
_device[MODEL] = 'iPad';
_device[TYPE] = TABLET;
}
return _device; return _device;
}; };
this.getEngine = function () { this.getEngine = function () {
@ -820,20 +838,16 @@
rgxMapper.call(_engine, _ua, _rgxmap.engine); rgxMapper.call(_engine, _ua, _rgxmap.engine);
return _engine; return _engine;
}; };
this.getGPU = function () {
var _gpu = {};
_gpu[VENDOR] = undefined;
_gpu[MODEL] = undefined;
if (_renderer) {
rgxMapper.call(_gpu, _renderer, _rgxmap.gpu);
}
return _gpu;
};
this.getOS = function () { this.getOS = function () {
var _os = {}; var _os = {};
_os[NAME] = undefined; _os[NAME] = undefined;
_os[VERSION] = undefined; _os[VERSION] = undefined;
rgxMapper.call(_os, _ua, _rgxmap.os); rgxMapper.call(_os, _ua, _rgxmap.os);
if (!_os[NAME] && _uach && _uach.platform != 'Unknown') {
_os[NAME] = _uach.platform
.replace(/chrome os/i, CHROMIUM_OS)
.replace(/macos/i, MAC_OS); // backward compatibility
}
return _os; return _os;
}; };
this.getResult = function () { this.getResult = function () {
@ -843,17 +857,9 @@
engine : this.getEngine(), engine : this.getEngine(),
os : this.getOS(), os : this.getOS(),
device : this.getDevice(), device : this.getDevice(),
cpu : this.getCPU(), cpu : this.getCPU()
gpu : this.getGPU()
}; };
}; };
this.getRenderer = function () {
return _renderer;
};
this.setRenderer = function (renderer) {
_renderer = renderer;
return this;
};
this.getUA = function () { this.getUA = function () {
return _ua; return _ua;
}; };
@ -862,12 +868,6 @@
return this; return this;
}; };
this.setUA(_ua); this.setUA(_ua);
// browser only
if (typeof window !== UNDEF_TYPE && window.document) {
var canvas = document.createElement('canvas');
var gl = canvas.getContext ? canvas.getContext('webgl2') || canvas.getContext('webgl') || canvas.getContext('experimental-webgl') : undefined;
this.setRenderer(gl && gl.getParameter && gl.getExtension && gl.getExtension('WEBGL_debug_renderer_info') ? gl.getParameter(gl.getExtension('WEBGL_debug_renderer_info').UNMASKED_RENDERER_WEBGL) : undefined);
}
return this; return this;
}; };
@ -876,7 +876,6 @@
UAParser.CPU = enumerize([ARCHITECTURE]); UAParser.CPU = enumerize([ARCHITECTURE]);
UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]); UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]); UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
UAParser.GPU = enumerize([VENDOR, MODEL]);
/////////// ///////////
// Export // Export