leaflet
Version:
JavaScript library for mobile-friendly interactive maps
60 lines (46 loc) • 1.93 kB
JavaScript
/*
* L.Browser handles different browser and feature detections for internal Leaflet use.
*/
(function () {
var ua = navigator.userAgent.toLowerCase(),
doc = document.documentElement,
ie = 'ActiveXObject' in window,
webkit = ua.indexOf('webkit') !== -1,
phantomjs = ua.indexOf('phantom') !== -1,
android23 = ua.search('android [23]') !== -1,
chrome = ua.indexOf('chrome') !== -1,
gecko = ua.indexOf('gecko') !== -1 && !webkit && !window.opera && !ie,
mobile = typeof orientation !== 'undefined' || ua.indexOf('mobile') !== -1,
msPointer = !window.PointerEvent && window.MSPointerEvent,
pointer = (window.PointerEvent && navigator.pointerEnabled) || msPointer,
ie3d = ie && ('transition' in doc.style),
webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23,
gecko3d = 'MozPerspective' in doc.style,
opera12 = 'OTransition' in doc.style;
var touch = !window.L_NO_TOUCH && !phantomjs && (pointer || 'ontouchstart' in window ||
(window.DocumentTouch && document instanceof window.DocumentTouch));
L.Browser = {
ie: ie,
ielt9: ie && !document.addEventListener,
webkit: webkit,
gecko: gecko,
android: ua.indexOf('android') !== -1,
android23: android23,
chrome: chrome,
safari: !chrome && ua.indexOf('safari') !== -1,
ie3d: ie3d,
webkit3d: webkit3d,
gecko3d: gecko3d,
opera12: opera12,
any3d: !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantomjs,
mobile: mobile,
mobileWebkit: mobile && webkit,
mobileWebkit3d: mobile && webkit3d,
mobileOpera: mobile && window.opera,
mobileGecko: mobile && gecko,
touch: !!touch,
msPointer: !!msPointer,
pointer: !!pointer,
retina: (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1
};
}());