Merge pull request #81 from duzun/patch-2

Keep global scope clean with AMD. Always check for jQuery global.
This commit is contained in:
Faisal Salman 2014-11-20 17:40:52 +07:00
commit 4d3656bb9c

View File

@ -2,7 +2,7 @@
* UAParser.js v0.7.3 * UAParser.js v0.7.3
* Lightweight JavaScript-based User-Agent string parser * Lightweight JavaScript-based User-Agent string parser
* https://github.com/faisalman/ua-parser-js * https://github.com/faisalman/ua-parser-js
* *
* Copyright © 2012-2014 Faisal Salman <fyzlman@gmail.com> * Copyright © 2012-2014 Faisal Salman <fyzlman@gmail.com>
* Dual licensed under GPLv2 & MIT * Dual licensed under GPLv2 & MIT
*/ */
@ -259,7 +259,7 @@
], [[NAME, 'Yandex'], VERSION, MAJOR], [ ], [[NAME, 'Yandex'], VERSION, MAJOR], [
/(comodo_dragon)\/((\d+)?[\w\.]+)/i // Comodo Dragon /(comodo_dragon)\/((\d+)?[\w\.]+)/i // Comodo Dragon
], [[NAME, /_/g, ' '], VERSION, MAJOR], [ ], [[NAME, /_/g, ' '], VERSION, MAJOR], [
/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i, /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i,
// Chrome/OmniWeb/Arora/Tizen/Nokia // Chrome/OmniWeb/Arora/Tizen/Nokia
@ -548,16 +548,16 @@
/(nexus\s[45])/i, // LG /(nexus\s[45])/i, // LG
/lg[e;\s\/-]+(\w+)*/i /lg[e;\s\/-]+(\w+)*/i
], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [ ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [
/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo /android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo
], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [ ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
/linux;.+((jolla));/i // Jolla /linux;.+((jolla));/i // Jolla
], [VENDOR, MODEL, [TYPE, MOBILE]], [ ], [VENDOR, MODEL, [TYPE, MOBILE]], [
/((pebble))app\/[\d\.]+\s/i // Pebble /((pebble))app\/[\d\.]+\s/i // Pebble
], [VENDOR, MODEL, [TYPE, WEARABLE]], [ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
/android.+;\s(glass)\s\d/i // Google Glass /android.+;\s(glass)\s\d/i // Google Glass
], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [ ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [
@ -631,7 +631,7 @@
/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i // iOS /(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i // iOS
], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [ ], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [
/(mac\sos\sx)\s?([\w\s\.]+\w)*/i, /(mac\sos\sx)\s?([\w\s\.]+\w)*/i,
/(macintosh|mac(?=_powerpc)\s)/i // Mac OS /(macintosh|mac(?=_powerpc)\s)/i // Mac OS
], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [
@ -700,7 +700,7 @@
UAParser.BROWSER = { UAParser.BROWSER = {
NAME : NAME, NAME : NAME,
MAJOR : MAJOR, MAJOR : MAJOR,
VERSION : VERSION VERSION : VERSION
}; };
UAParser.CPU = { UAParser.CPU = {
ARCHITECTURE : ARCHITECTURE ARCHITECTURE : ARCHITECTURE
@ -722,7 +722,7 @@
}; };
UAParser.OS = { UAParser.OS = {
NAME : NAME, NAME : NAME,
VERSION : VERSION VERSION : VERSION
}; };
@ -739,30 +739,37 @@
} }
exports.UAParser = UAParser; exports.UAParser = UAParser;
} else { } else {
// browser env // requirejs env
window.UAParser = UAParser;
// requirejs env (optional)
if (typeof(define) === FUNC_TYPE && define.amd) { if (typeof(define) === FUNC_TYPE && define.amd) {
define(function () { define(function () {
return UAParser; return UAParser;
}); });
} }
// jQuery/Zepto specific (optional) else {
var $ = window.jQuery || window.Zepto; // browser env
if (typeof($) !== UNDEF_TYPE) { window.UAParser = UAParser;
var parser = new UAParser();
$.ua = parser.getResult();
$.ua.get = function() {
return parser.getUA();
};
$.ua.set = function (uastring) {
parser.setUA(uastring);
var result = parser.getResult();
for (var prop in result) {
$.ua[prop] = result[prop];
}
};
} }
} }
// jQuery/Zepto specific (optional)
// Note:
// 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;
if (typeof($) !== UNDEF_TYPE) {
var parser = new UAParser();
$.ua = parser.getResult();
$.ua.get = function() {
return parser.getUA();
};
$.ua.set = function (uastring) {
parser.setUA(uastring);
var result = parser.getResult();
for (var prop in result) {
$.ua[prop] = result[prop];
}
};
}
})(this); })(this);