mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-28 16:38:47 +03:00
Merge branch 'develop' of github.com:faisalman/ua-parser-js into develop
This commit is contained in:
commit
5ba5e7abc9
@ -212,6 +212,12 @@ requirejs(['ua-parser-js'], function(UAParser) {
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Using CDN
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/ua-parser-js@0/dist/ua-parser.min.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
## Using bower
|
## Using bower
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -138,7 +138,7 @@
|
|||||||
}
|
}
|
||||||
i += 2;
|
i += 2;
|
||||||
}
|
}
|
||||||
//console.log(this);
|
// console.log(this);
|
||||||
//return this;
|
//return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -326,6 +326,9 @@
|
|||||||
/version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile
|
/version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile
|
||||||
], [VERSION, NAME], [
|
], [VERSION, NAME], [
|
||||||
|
|
||||||
|
/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS
|
||||||
|
], [[NAME, 'GSA'], VERSION], [
|
||||||
|
|
||||||
/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
|
/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
|
||||||
], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [
|
], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [
|
||||||
|
|
||||||
@ -649,9 +652,11 @@
|
|||||||
|
|
||||||
/android.+(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
/android.+(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
||||||
/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi
|
/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi
|
||||||
/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d\w)?)\s+build/i // Xiaomi Mi
|
/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Mi
|
||||||
|
/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+)?)\s+build/i // Redmi Phones
|
||||||
], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
|
], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
|
||||||
|
/android.+(mi[\s\-_]*(?:pad)?(?:[\s_]*[\w\s]+)?)\s+build/i // Mi Pad tablets
|
||||||
|
],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [
|
||||||
/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet
|
/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet
|
||||||
], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [
|
], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [
|
||||||
|
|
||||||
@ -874,7 +879,7 @@
|
|||||||
/////////////////
|
/////////////////
|
||||||
// Constructor
|
// Constructor
|
||||||
////////////////
|
////////////////
|
||||||
|
/*
|
||||||
var Browser = function (name, version) {
|
var Browser = function (name, version) {
|
||||||
this[NAME] = name;
|
this[NAME] = name;
|
||||||
this[VERSION] = version;
|
this[VERSION] = version;
|
||||||
@ -889,7 +894,7 @@
|
|||||||
};
|
};
|
||||||
var Engine = Browser;
|
var Engine = Browser;
|
||||||
var OS = Browser;
|
var OS = Browser;
|
||||||
|
*/
|
||||||
var UAParser = function (uastring, extensions) {
|
var UAParser = function (uastring, extensions) {
|
||||||
|
|
||||||
if (typeof uastring === 'object') {
|
if (typeof uastring === 'object') {
|
||||||
@ -903,30 +908,35 @@
|
|||||||
|
|
||||||
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
||||||
var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
|
var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
|
||||||
var browser = new Browser();
|
//var browser = new Browser();
|
||||||
var cpu = new CPU();
|
//var cpu = new CPU();
|
||||||
var device = new Device();
|
//var device = new Device();
|
||||||
var engine = new Engine();
|
//var engine = new Engine();
|
||||||
var os = new OS();
|
//var os = new OS();
|
||||||
|
|
||||||
this.getBrowser = function () {
|
this.getBrowser = function () {
|
||||||
|
var browser = { name: undefined, version: undefined };
|
||||||
mapper.rgx.call(browser, ua, rgxmap.browser);
|
mapper.rgx.call(browser, ua, rgxmap.browser);
|
||||||
browser.major = util.major(browser.version); // deprecated
|
browser.major = util.major(browser.version); // deprecated
|
||||||
return browser;
|
return browser;
|
||||||
};
|
};
|
||||||
this.getCPU = function () {
|
this.getCPU = function () {
|
||||||
|
var cpu = { architecture: undefined };
|
||||||
mapper.rgx.call(cpu, ua, rgxmap.cpu);
|
mapper.rgx.call(cpu, ua, rgxmap.cpu);
|
||||||
return cpu;
|
return cpu;
|
||||||
};
|
};
|
||||||
this.getDevice = function () {
|
this.getDevice = function () {
|
||||||
|
var device = { vendor: undefined, model: undefined, type: undefined };
|
||||||
mapper.rgx.call(device, ua, rgxmap.device);
|
mapper.rgx.call(device, ua, rgxmap.device);
|
||||||
return device;
|
return device;
|
||||||
};
|
};
|
||||||
this.getEngine = function () {
|
this.getEngine = function () {
|
||||||
|
var engine = { name: undefined, version: undefined };
|
||||||
mapper.rgx.call(engine, ua, rgxmap.engine);
|
mapper.rgx.call(engine, ua, rgxmap.engine);
|
||||||
return engine;
|
return engine;
|
||||||
};
|
};
|
||||||
this.getOS = function () {
|
this.getOS = function () {
|
||||||
|
var os = { name: undefined, version: undefined };
|
||||||
mapper.rgx.call(os, ua, rgxmap.os);
|
mapper.rgx.call(os, ua, rgxmap.os);
|
||||||
return os;
|
return os;
|
||||||
};
|
};
|
||||||
@ -945,11 +955,11 @@
|
|||||||
};
|
};
|
||||||
this.setUA = function (uastring) {
|
this.setUA = function (uastring) {
|
||||||
ua = uastring;
|
ua = uastring;
|
||||||
browser = new Browser();
|
//browser = new Browser();
|
||||||
cpu = new CPU();
|
//cpu = new CPU();
|
||||||
device = new Device();
|
//device = new Device();
|
||||||
engine = new Engine();
|
//engine = new Engine();
|
||||||
os = new OS();
|
//os = new OS();
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
return this;
|
return this;
|
||||||
|
@ -968,5 +968,15 @@
|
|||||||
"version" : "6.5.8.2910",
|
"version" : "6.5.8.2910",
|
||||||
"major" : "6"
|
"major" : "6"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"desc" : "GSA on iOS",
|
||||||
|
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) GSA/30.1.161623614 Mobile/14F89 Safari/602.1",
|
||||||
|
"expect" :
|
||||||
|
{
|
||||||
|
"name" : "GSA",
|
||||||
|
"version" : "30.1.161623614",
|
||||||
|
"major" : "30"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
File diff suppressed because it is too large
Load Diff
15
test/test.js
15
test/test.js
@ -65,6 +65,21 @@ 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 () {
|
describe('Extending Regex', function () {
|
||||||
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
|
var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
|
||||||
var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]];
|
var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user