mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-11-15 22:52:16 +03:00
Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3b89dff771 | ||
|
|
459f3d34f5 | ||
|
|
7ae3098778 | ||
|
|
806c2b8030 | ||
|
|
cb1a64b509 | ||
|
|
b49cfae4e2 | ||
|
|
91b046462c | ||
|
|
69509af6dd | ||
|
|
225f703b67 | ||
|
|
7f217753f5 | ||
|
|
10f9fb35ca | ||
|
|
5ae468a3d3 | ||
|
|
fd46c4d2be | ||
|
|
297c6538bc | ||
|
|
f9f9fa79e1 | ||
|
|
07fe58b793 | ||
|
|
3a4626b5e8 | ||
|
|
3fd01f07ea | ||
|
|
d103dd5450 | ||
|
|
6984de7927 | ||
|
|
2610f37a8b | ||
|
|
a25bb8b1a6 | ||
|
|
ee2db31f8c | ||
|
|
89775a8ae7 | ||
|
|
7d826ed62e | ||
|
|
a6316f02b0 | ||
|
|
72a11e24b2 | ||
|
|
f7ca724f3b | ||
|
|
8d826fcc24 | ||
|
|
951106c425 | ||
|
|
83ca52bb28 | ||
|
|
6fb4941458 | ||
|
|
48ab3b372c | ||
|
|
38c409e8d9 | ||
|
|
4e2cbdfd16 | ||
|
|
fbe8a0e3a6 | ||
|
|
8e9c400ec5 | ||
|
|
b89fa098aa | ||
|
|
f3882f1882 | ||
|
|
a25426840c | ||
|
|
985a7b18e0 | ||
|
|
8e09cd49e3 | ||
|
|
4768992762 | ||
|
|
f89e08f2c0 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ua-parser-js",
|
||||
"version": "0.7.13",
|
||||
"version": "0.7.15",
|
||||
"authors": [
|
||||
"Faisal Salman <fyzlman@gmail.com>"
|
||||
],
|
||||
|
||||
4
dist/ua-parser.min.js
vendored
4
dist/ua-parser.min.js
vendored
File diff suppressed because one or more lines are too long
4
dist/ua-parser.pack.js
vendored
4
dist/ua-parser.pack.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
Package.describe({
|
||||
name: 'faisalman:ua-parser-js',
|
||||
version: '0.7.13',
|
||||
version: '0.7.15',
|
||||
summary: 'Lightweight JavaScript-based user-agent string parser',
|
||||
git: 'https://github.com/faisalman/ua-parser-js.git',
|
||||
documentation: 'readme.md'
|
||||
|
||||
14
package.json
14
package.json
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"title": "UAParser.js",
|
||||
"name": "ua-parser-js",
|
||||
"version": "0.7.13",
|
||||
"author": "Faisal Salman <fyzlman@gmail.com> (http://faisalman.com)",
|
||||
"version": "0.7.15",
|
||||
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
|
||||
"description": "Lightweight JavaScript-based user-agent string parser",
|
||||
"keywords": [
|
||||
"user-agent",
|
||||
@@ -11,7 +11,9 @@
|
||||
"engine",
|
||||
"os",
|
||||
"device",
|
||||
"cpu"
|
||||
"cpu",
|
||||
"jquery-plugin",
|
||||
"ecosystem:jquery"
|
||||
],
|
||||
"homepage": "http://github.com/faisalman/ua-parser-js",
|
||||
"contributors": [
|
||||
@@ -84,7 +86,6 @@
|
||||
},
|
||||
"verup": {
|
||||
"files": [
|
||||
"ua-parser-js.jquery.json",
|
||||
"bower.json",
|
||||
"package.js",
|
||||
"src/ua-parser.js"
|
||||
@@ -113,5 +114,8 @@
|
||||
"dist": "dist",
|
||||
"src": "src",
|
||||
"test": "test"
|
||||
}
|
||||
},
|
||||
"bugs": "https://github.com/faisalman/ua-parser-js/issues",
|
||||
"demo": "https://faisalman.github.io/ua-parser-js",
|
||||
"download": "https://raw.github.com/faisalman/ua-parser-js/master/dist/ua-parser.min.js"
|
||||
}
|
||||
|
||||
15
readme.md
15
readme.md
@@ -253,16 +253,16 @@ $('body').addClass('ua-browser-' + $.ua.browser.name + ' ua-devicetype-' + $.ua.
|
||||
|
||||
## Extending regex patterns
|
||||
|
||||
* `UAParser(uastring[, extensions])`
|
||||
* `UAParser([uastring,] extensions)`
|
||||
|
||||
Pass your own regexes to extend the limited matching rules.
|
||||
|
||||
```js
|
||||
// Example:
|
||||
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
|
||||
var myOwnRegex = [[/(myownbrowser)\/([\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION]];
|
||||
var parser = new UAParser(uaString, { browser: myOwnRegex });
|
||||
console.log(parser.getBrowser()); // {name: "MyOwnBrowser", version: "1.3"}
|
||||
var myParser = new UAParser({ browser: myOwnRegex });
|
||||
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
|
||||
console.log(myParser.setUA(uaString).getBrowser()); // {name: "MyOwnBrowser", version: "1.3"}
|
||||
```
|
||||
|
||||
|
||||
@@ -287,6 +287,13 @@ $ npm run build
|
||||
```
|
||||
|
||||
|
||||
# Donate
|
||||
|
||||
Do you use & like UAParser.js but you don’t find a way to show some love? If yes, please consider donating to support this project. Otherwise, no worries, regardless of whether there is support or not, I will keep maintaining this project. Still, if you buy me a cup of coffee I would be more than happy though :)
|
||||
|
||||
[](https://pledgie.com/campaigns/34252)
|
||||
|
||||
|
||||
# License
|
||||
|
||||
Dual licensed under GPLv2 & MIT
|
||||
|
||||
158
src/ua-parser.js
158
src/ua-parser.js
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* UAParser.js v0.7.13
|
||||
* UAParser.js v0.7.15
|
||||
* Lightweight JavaScript-based User-Agent string parser
|
||||
* https://github.com/faisalman/ua-parser-js
|
||||
*
|
||||
@@ -16,7 +16,7 @@
|
||||
/////////////
|
||||
|
||||
|
||||
var LIBVERSION = '0.7.13',
|
||||
var LIBVERSION = '0.7.15',
|
||||
EMPTY = '',
|
||||
UNKNOWN = '?',
|
||||
FUNC_TYPE = 'function',
|
||||
@@ -270,10 +270,7 @@
|
||||
/(puffin)\/([\w\.]+)/i // Puffin
|
||||
], [[NAME, 'Puffin'], VERSION], [
|
||||
|
||||
/(uc\s?browser)[\/\s]?([\w\.]+)/i,
|
||||
/ucweb.+(ucbrowser)[\/\s]?([\w\.]+)/i,
|
||||
/juc.+(ucweb)[\/\s]?([\w\.]+)/i,
|
||||
/(ucbrowser)\/([\w\.]+)/i
|
||||
/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i
|
||||
// UCBrowser
|
||||
], [[NAME, 'UCBrowser'], VERSION], [
|
||||
|
||||
@@ -283,6 +280,9 @@
|
||||
/(micromessenger)\/([\w\.]+)/i // WeChat
|
||||
], [[NAME, 'WeChat'], VERSION], [
|
||||
|
||||
/(QQ)\/([\d\.]+)/i // QQ, aka ShouQ
|
||||
], [NAME, VERSION], [
|
||||
|
||||
/m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser
|
||||
], [NAME, VERSION], [
|
||||
|
||||
@@ -298,7 +298,9 @@
|
||||
/\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
|
||||
], [[NAME, /(.+)/, '$1 WebView'], VERSION], [
|
||||
|
||||
/android.+samsungbrowser\/([\w\.]+)/i,
|
||||
/((?:oculus|samsung)browser)\/([\w\.]+)/i
|
||||
], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser
|
||||
|
||||
/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser
|
||||
], [VERSION, [NAME, 'Android Browser']], [
|
||||
|
||||
@@ -518,8 +520,8 @@
|
||||
], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [
|
||||
|
||||
/(blackberry)[\s-]?(\w+)/i, // BlackBerry
|
||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,
|
||||
// BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Huawei/Meizu/Motorola/Polytron
|
||||
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,
|
||||
// BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
||||
/(hp)\s([\w\s]+\w)/i, // HP iPAQ
|
||||
/(asus)-?(\w+)/i // Asus
|
||||
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
||||
@@ -532,8 +534,8 @@
|
||||
/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony
|
||||
/(sony)?(?:sgp.+)\sbuild\//i
|
||||
], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [
|
||||
/(?:sony)?(?:(?:(?:c|d)\d{4})|(?:so[-l].+))\sbuild\//i
|
||||
], [[VENDOR, 'Sony'], [MODEL, 'Xperia Phone'], [TYPE, MOBILE]], [
|
||||
/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i
|
||||
], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [
|
||||
|
||||
/\s(ouya)\s/i, // Ouya
|
||||
/(nintendo)\s([wids3u]+)/i // Nintendo
|
||||
@@ -553,14 +555,15 @@
|
||||
|
||||
/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC
|
||||
/(zte)-(\w+)*/i, // ZTE
|
||||
/(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i
|
||||
// Alcatel/GeeksPhone/Huawei/Lenovo/Nexian/Panasonic/Sony
|
||||
/(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i
|
||||
// Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony
|
||||
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
|
||||
|
||||
/(nexus\s9)/i // HTC Nexus 9
|
||||
], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
|
||||
|
||||
/(nexus\s6p)/i // Huawei Nexus 6P
|
||||
/d\/huawei([\w\s-]+)[;\)]/i,
|
||||
/(nexus\s6p)/i // Huawei
|
||||
], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [
|
||||
|
||||
/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia
|
||||
@@ -609,12 +612,15 @@
|
||||
/android\s3\.[\s\w;-]{10}(a\d{3})/i // Acer
|
||||
], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+([vl]k\-?\d{3})\s+build/i // LG Tablet
|
||||
], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [
|
||||
/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet
|
||||
], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [
|
||||
/(lg) netcast\.tv/i // LG SmartTV
|
||||
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
|
||||
/(nexus\s[45])/i, // LG
|
||||
/lg[e;\s\/-]+(\w+)*/i
|
||||
/lg[e;\s\/-]+(\w+)*/i,
|
||||
/android.+lg(\-?[\d\w]+)\s+build/i
|
||||
], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [
|
||||
|
||||
/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo
|
||||
@@ -646,14 +652,85 @@
|
||||
/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d\w)?)\s+build/i // Xiaomi Mi
|
||||
], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
|
||||
|
||||
/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet
|
||||
], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+a000(1)\s+build/i // OnePlus
|
||||
], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
|
||||
|
||||
/\s(tablet)[;\/]/i, // Unidentifiable Tablet
|
||||
/\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile
|
||||
], [[TYPE, util.lowerize], VENDOR, MODEL]
|
||||
/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets
|
||||
], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
|
||||
|
||||
/*//////////////////////////
|
||||
/android.+[;\/]\s*(Venue[\d\s]*)\s+build/i // Dell Venue Tablets
|
||||
], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet
|
||||
], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i // Barnes & Noble Tablet
|
||||
], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet
|
||||
], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(zte)?.+(k\d{2})\s+build/i // ZTE K Series Tablet
|
||||
], [[VENDOR, 'ZTE'], MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile
|
||||
], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
|
||||
|
||||
/android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet
|
||||
], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets
|
||||
], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
|
||||
|
||||
/(android).+[;\/]\s+([YR]\d{2}x?.*)\s+build/i,
|
||||
/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(.+)\s+build/i // Dragon Touch Tablet
|
||||
], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(NS-?.+)\s+build/i // Insignia Tablets
|
||||
], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*((NX|Next)-?.+)\s+build/i // NextBook Tablets
|
||||
], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(Xtreme\_?)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i
|
||||
], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones
|
||||
|
||||
/android.+[;\/]\s*(LVTEL\-?)?(V1[12])\s+build/i // LvTel Phones
|
||||
], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
|
||||
|
||||
/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets
|
||||
], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(.*\b)\s+build/i // Le Pan Tablets
|
||||
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i // MachSpeed Tablets
|
||||
], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets
|
||||
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets
|
||||
], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+(KS(.+))\s+build/i // Amazon Kindle Tablets
|
||||
], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
|
||||
|
||||
/android.+(Gigaset)[\s\-]+(Q.+)\s+build/i // Gigaset Tablets
|
||||
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
||||
|
||||
/\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet
|
||||
/\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile
|
||||
], [[TYPE, util.lowerize], VENDOR, MODEL], [
|
||||
|
||||
/(android.+)[;\/].+build/i // Generic Android Device
|
||||
], [MODEL, [VENDOR, 'Generic']]
|
||||
|
||||
|
||||
/*//////////////////////////
|
||||
// TODO: move to string map
|
||||
////////////////////////////
|
||||
|
||||
@@ -775,8 +852,9 @@
|
||||
/(haiku)\s(\w+)/i // Haiku
|
||||
], [NAME, VERSION],[
|
||||
|
||||
/(ip[honead]+)(?:.*os\s([\w]+)*\slike\smac|;\sopera)/i // iOS
|
||||
], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [
|
||||
/cfnetwork\/.+darwin/i,
|
||||
/ip[honead]+(?:.*os\s([\w]+)*\slike\smac|;\sopera)/i // iOS
|
||||
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
|
||||
|
||||
/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,
|
||||
/(macintosh|mac(?=_powerpc)\s)/i // Mac OS
|
||||
@@ -796,7 +874,7 @@
|
||||
/////////////////
|
||||
// Constructor
|
||||
////////////////
|
||||
|
||||
/*
|
||||
var Browser = function (name, version) {
|
||||
this[NAME] = name;
|
||||
this[VERSION] = version;
|
||||
@@ -811,39 +889,49 @@
|
||||
};
|
||||
var Engine = Browser;
|
||||
var OS = Browser;
|
||||
|
||||
*/
|
||||
var UAParser = function (uastring, extensions) {
|
||||
|
||||
if (typeof uastring === 'object') {
|
||||
extensions = uastring;
|
||||
uastring = undefined;
|
||||
}
|
||||
|
||||
if (!(this instanceof UAParser)) {
|
||||
return new UAParser(uastring, extensions).getResult();
|
||||
}
|
||||
|
||||
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
||||
var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
|
||||
var browser = new Browser();
|
||||
var cpu = new CPU();
|
||||
var device = new Device();
|
||||
var engine = new Engine();
|
||||
var os = new OS();
|
||||
//var browser = new Browser();
|
||||
//var cpu = new CPU();
|
||||
//var device = new Device();
|
||||
//var engine = new Engine();
|
||||
//var os = new OS();
|
||||
|
||||
this.getBrowser = function () {
|
||||
var browser = { name: undefined, version: undefined };
|
||||
mapper.rgx.call(browser, ua, rgxmap.browser);
|
||||
browser.major = util.major(browser.version); // deprecated
|
||||
return browser;
|
||||
};
|
||||
this.getCPU = function () {
|
||||
var cpu = { architecture: undefined };
|
||||
mapper.rgx.call(cpu, ua, rgxmap.cpu);
|
||||
return cpu;
|
||||
};
|
||||
this.getDevice = function () {
|
||||
var device = { vendor: undefined, model: undefined, type: undefined };
|
||||
mapper.rgx.call(device, ua, rgxmap.device);
|
||||
return device;
|
||||
};
|
||||
this.getEngine = function () {
|
||||
var engine = { name: undefined, version: undefined };
|
||||
mapper.rgx.call(engine, ua, rgxmap.engine);
|
||||
return engine;
|
||||
};
|
||||
this.getOS = function () {
|
||||
var os = { name: undefined, version: undefined };
|
||||
mapper.rgx.call(os, ua, rgxmap.os);
|
||||
return os;
|
||||
};
|
||||
@@ -862,11 +950,11 @@
|
||||
};
|
||||
this.setUA = function (uastring) {
|
||||
ua = uastring;
|
||||
browser = new Browser();
|
||||
cpu = new CPU();
|
||||
device = new Device();
|
||||
engine = new Engine();
|
||||
os = new OS();
|
||||
//browser = new Browser();
|
||||
//cpu = new CPU();
|
||||
//device = new Device();
|
||||
//engine = new Engine();
|
||||
//os = new OS();
|
||||
return this;
|
||||
};
|
||||
return this;
|
||||
@@ -920,7 +1008,7 @@
|
||||
define(function () {
|
||||
return UAParser;
|
||||
});
|
||||
} else {
|
||||
} else if (window) {
|
||||
// browser env
|
||||
window.UAParser = UAParser;
|
||||
}
|
||||
@@ -931,7 +1019,7 @@
|
||||
// In AMD env the global scope should be kept clean, but jQuery is an exception.
|
||||
// jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
|
||||
// and we should catch that.
|
||||
var $ = window.jQuery || window.Zepto;
|
||||
var $ = window && (window.jQuery || window.Zepto);
|
||||
if (typeof $ !== UNDEF_TYPE) {
|
||||
var parser = new UAParser();
|
||||
$.ua = parser.getResult();
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G925F Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Android Browser",
|
||||
"name" : "Samsung Browser",
|
||||
"version" : "3.0",
|
||||
"major" : "3"
|
||||
}
|
||||
@@ -549,6 +549,16 @@
|
||||
"major" : "7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Oculus Browser",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Oculus Browser",
|
||||
"version" : "3.4.9",
|
||||
"major" : "3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "OmniWeb",
|
||||
"ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48",
|
||||
@@ -719,6 +729,16 @@
|
||||
"major" : "2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Samsung Browser",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG-SM-G925A Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Samsung Browser",
|
||||
"version" : "4.0",
|
||||
"major" : "4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "SeaMonkey",
|
||||
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b4pre) Gecko/20090405 SeaMonkey/2.0b1pre",
|
||||
@@ -779,6 +799,16 @@
|
||||
"major" : "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "UC Browser",
|
||||
"ua" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 UBrowser/5.6.12860.7 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "UCBrowser",
|
||||
"version" : "5.6.12860.7",
|
||||
"major" : "5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "UC Browser",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 6.0.1; en-US; Lenovo P2a42 Build/MMB29M) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/11.2.0.915 U3/0.8.0 Mobile Safari/534.30",
|
||||
@@ -908,5 +938,25 @@
|
||||
"version" : "1.1",
|
||||
"major" : "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "QQ on iOS",
|
||||
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "QQ",
|
||||
"version" : "6.5.3.410",
|
||||
"major" : "6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "QQ on Android",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0; PRO 6 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.8 TBS/036824 Safari/537.36 V1_AND_SQ_6.5.8_422_YYB_D PA QQ/6.5.8.2910 NetType/WIFI WebP/0.3.0 Pixel/1080",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "QQ",
|
||||
"version" : "6.5.8.2910",
|
||||
"major" : "6"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -49,6 +49,16 @@
|
||||
"type" : "tablet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Huawei Honor",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; U8860 Build/HuaweiU8860) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Huawei",
|
||||
"model" : "U8860",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Huawei Nexus 6P",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MTC19V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537",
|
||||
@@ -59,6 +69,26 @@
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Huawei P10",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 7.0; VTR-L09 Build/HUAWEIVTR-L09; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Huawei",
|
||||
"model" : "VTR-L09",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Huawei Y3II",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 5.1; xx-xx; HUAWEI LUA-L03 Build/HUAWEILUA-L03) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Huawei",
|
||||
"model" : "LUA-L03",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iPod",
|
||||
"ua" : "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53",
|
||||
@@ -89,6 +119,16 @@
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Meizu M5 Note",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0; M5 Note Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Meizu",
|
||||
"model" : "M5 Note",
|
||||
"type" : "tablet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Microsoft Lumia 950",
|
||||
"ua" : "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
|
||||
@@ -219,6 +259,16 @@
|
||||
"type" : "tablet"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Samsung SM-C5000",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; SM-C5000 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.81 Mobile Safari/537.36 wkbrowser 4.1.35 3065",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Samsung",
|
||||
"model" : "SM-C5000",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Samsung SM-T231",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; SM-T231 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
|
||||
@@ -295,7 +345,7 @@
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Sony",
|
||||
"model" : "Xperia Phone",
|
||||
"model" : "C5303",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
@@ -305,7 +355,7 @@
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Sony",
|
||||
"model" : "Xperia Phone",
|
||||
"model" : "SO-02F",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
@@ -315,7 +365,7 @@
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Sony",
|
||||
"model" : "Xperia Phone",
|
||||
"model" : "D6653",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
@@ -325,7 +375,7 @@
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Sony",
|
||||
"model" : "Xperia Phone",
|
||||
"model" : "SOL25",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
@@ -335,7 +385,7 @@
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Sony",
|
||||
"model" : "Xperia Phone",
|
||||
"model" : "C5302",
|
||||
"type" : "mobile"
|
||||
}
|
||||
},
|
||||
@@ -533,4 +583,345 @@
|
||||
"type" : "mobile"
|
||||
}
|
||||
}
|
||||
,
|
||||
|
||||
{
|
||||
"desc" : "Generic Android Device",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Generic",
|
||||
"model" : "Android 6.0.1"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "LG VK Series Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0.2; VK700 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.84 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "LG",
|
||||
"model" : "VK700",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "LG LK Series Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0.1; LGLK430 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "LG",
|
||||
"model" : "LK430",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "RCA Voyager III Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; RCT6973W43 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "RCA",
|
||||
"model" : "RCT6973W43",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "RCA Voyager II Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0; RCT6773W22B Build/LRX21M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "RCA",
|
||||
"model" : "RCT6773W22B",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Verizon Quanta Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; QMV7B Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Verizon",
|
||||
"model" : "QMV7B",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Verizon Ellipsis 8 Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.1.1; QTAQZ3 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Verizon",
|
||||
"model" : "QTAQZ3",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Verizon Ellipsis 8HD Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; QTASUN1 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Verizon",
|
||||
"model" : "QTASUN1",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Dell Venue 8 Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; Venue 8 3830 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Dell",
|
||||
"model" : "Venue 8 3830",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Dell Venue 7 Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; Venue 7 3730 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Dell",
|
||||
"model" : "Venue 7 3730",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Barnes & Noble Nook HD+ Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; Barnes & Noble Nook HD+ Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Barnes & Noble",
|
||||
"model" : "Nook HD+",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Barnes & Noble V400 Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.0.4; BNTV400 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Barnes & Noble",
|
||||
"model" : "V400",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "NuVision TM101A540N Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.1; TM101A540N Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/50.0.2661.86 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "NuVision",
|
||||
"model" : "TM101A540N",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "ZTE K Series Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; K88 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "ZTE",
|
||||
"model" : "K88",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Swizz GEN610",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; GEN610 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Swiss",
|
||||
"model" : "GEN610",
|
||||
"type" : "mobile"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Swizz ZUR700",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; ZUR700 Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Swiss",
|
||||
"model" : "ZUR700",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Zeki TB782b Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 4.0.4; en-US; TB782B Build/IMM76D) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.0.2.299 U3/0.8.0 Mobile Safari/534.31",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Zeki",
|
||||
"model" : "TB782B",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Dragon Touch Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.0.4; DT9138B Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Dragon Touch",
|
||||
"model" : "9138B",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Insignia Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 6.0.1; NS-P08A7100 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Insignia",
|
||||
"model" : "NS-P08A7100",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Voice Xtreme V75",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 4.2.1; en-us; V75 Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Voice",
|
||||
"model" : "V75",
|
||||
"type" : "mobile"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "LvTel V11",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.1.1; V11 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "LvTel",
|
||||
"model" : "V11",
|
||||
"type" : "mobile"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Envizen Tablet V100MD",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; V100MD Build/V100MD.20130816) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Envizen",
|
||||
"model" : "V100MD",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Rotor Tablet",
|
||||
"ua" : "mozilla/5.0 (linux; android 5.0.1; tu_1491 build/lrx22c) applewebkit/537.36 (khtml, like gecko) chrome/43.0.2357.93 safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Rotor",
|
||||
"model" : "1491",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "MachSpeed Tablets",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.4.2; Trio 7.85 vQ Build/Trio_7.85_vQ) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "MachSpeed",
|
||||
"model" : "Trio 7.85 vQ",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Trinity Tablets",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0.1; Trinity T101 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Trinity",
|
||||
"model" : "T101",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "NextBook Next7",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Next7P12 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "NextBook",
|
||||
"model" : "Next7P12",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "NextBook Tablets",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0; NXA8QC116 Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "NextBook",
|
||||
"model" : "NXA8QC116",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Le Pan Tablets",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.2.2; Le Pan TC802A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Le Pan",
|
||||
"model" : "TC802A",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Le Pan Tablets",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.2.2; Le Pan TC802A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Le Pan",
|
||||
"model" : "TC802A",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Amazon Kindle Fire Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; U; Android 4.4.3; en-us; KFSAWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.66 like Chrome/39.0.2171.93 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Amazon",
|
||||
"model" : "KFSAWI",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"desc" : "Gigaset Tablet",
|
||||
"ua" : "Mozilla/5.0 (Linux; Android 4.2.2; Gigaset QV830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"vendor" : "Gigaset",
|
||||
"model" : "QV830",
|
||||
"type" : "tablet"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -485,6 +485,15 @@
|
||||
"version" : ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iOS in App",
|
||||
"ua" : "AppName/version CFNetwork/version Darwin/version",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "iOS",
|
||||
"version" : "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iOS with Chrome",
|
||||
"ua" : "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3",
|
||||
|
||||
30
test/test.js
30
test/test.js
@@ -65,13 +65,35 @@ for (var i in methods) {
|
||||
});
|
||||
}
|
||||
|
||||
describe('Returns', function () {
|
||||
it('getResult() should returns JSON', function(done) {
|
||||
assert.deepEqual(new UAParser('').getResult(),
|
||||
{
|
||||
ua : '',
|
||||
browser: { name: undefined, version: undefined, major: undefined },
|
||||
cpu: { architecture: undefined },
|
||||
device: { vendor: undefined, model: undefined, type: undefined },
|
||||
engine: { name: undefined, version: undefined},
|
||||
os: { name: undefined, version: undefined }
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Extending Regex', function () {
|
||||
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
|
||||
var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]];
|
||||
var parser = new UAParser(uaString, {browser: myOwnBrowser});
|
||||
assert.equal(parser.getBrowser().name, 'MyOwnBrowser');
|
||||
assert.equal(parser.getBrowser().version, '1.3');
|
||||
assert.equal(parser.getBrowser().major, '1');
|
||||
|
||||
var parser1 = new UAParser(uaString, {browser: myOwnBrowser});
|
||||
assert.equal(parser1.getBrowser().name, 'MyOwnBrowser');
|
||||
assert.equal(parser1.getBrowser().version, '1.3');
|
||||
assert.equal(parser1.getBrowser().major, '1');
|
||||
|
||||
var parser2 = new UAParser({browser: myOwnBrowser});
|
||||
assert.equal(parser2.getBrowser().name, undefined);
|
||||
parser2.setUA(uaString);
|
||||
assert.equal(parser2.getBrowser().name, 'MyOwnBrowser');
|
||||
assert.equal(parser1.getBrowser().version, '1.3');
|
||||
});
|
||||
|
||||
describe('Using Require.js', function () {
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"title": "UAParser.js",
|
||||
"name": "ua-parser-js",
|
||||
"version": "0.7.13",
|
||||
"description": "Lightweight JavaScript-based user-agent string parser",
|
||||
"keywords": [
|
||||
"user-agent",
|
||||
"parser",
|
||||
"browser",
|
||||
"engine",
|
||||
"os",
|
||||
"device",
|
||||
"cpu"
|
||||
],
|
||||
"homepage": "https://faisalman.github.com/ua-parser-js",
|
||||
"author": {
|
||||
"name": "Faisal Salman",
|
||||
"email": "fyzlman@gmail.com"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery": ">=1.5"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "MIT",
|
||||
"url": "http://www.opensource.org/licenses/mit-license.php"
|
||||
}
|
||||
],
|
||||
"bugs": "https://github.com/faisalman/ua-parser-js/issues",
|
||||
"docs": "https://github.com/faisalman/ua-parser-js",
|
||||
"download": "https://raw.github.com/faisalman/ua-parser-js/master/dist/ua-parser.min.js"
|
||||
}
|
||||
Reference in New Issue
Block a user