(function () { var canvas, gl, glRenderer, models, devices = [ ['a7', '640x1136', ['iPhone 5', 'iPhone 5s']], ['a7', '1536x2048', ['iPad Air', 'iPad Mini 2', 'iPad Mini 3']], ['a8', '640x1136', ['iPod touch (6th gen)']], ['a8', '750x1334', ['iPhone 6']], ['a8', '1242x2208', ['iPhone 6 Plus']], ['a8', '1536x2048', ['iPad Air 2', 'iPad Mini 4']], ['a9', '640x1136', ['iPhone SE']], ['a9', '750x1334', ['iPhone 6s']], ['a9', '1242x2208', ['iPhone 6s Plus']], ['a9x', '1536x2048', ['iPad Pro (1st gen 9.7-inch)']], ['a9x', '2048x2732', ['iPad Pro (1st gen 12.9-inch)']], ['a10', '750x1334', ['iPhone 7']], ['a10', '1242x2208', ['iPhone 7 Plus']], ['a10x', '1668x2224', ['iPad Pro (2th gen 10.5-inch)']], ['a10x', '2048x2732', ['iPad Pro (2th gen 12.9-inch)']], ['a11', '750x1334', ['iPhone 8']], ['a11', '1242x2208', ['iPhone 8 Plus']], ['a11', '1125x2436', ['iPhone X']], ['a12', '828x1792', ['iPhone Xr']], ['a12', '1125x2436', ['iPhone Xs']], ['a12', '1242x2688', ['iPhone Xs Max']], ['a12x', '1668x2388', ['iPad Pro (3rd gen 11-inch)']], ['a12x', '2048x2732', ['iPad Pro (3rd gen 12.9-inch)']] ]; function getCanvas() { if (canvas == null) { canvas = document.createElement('canvas'); } return canvas; } function getGl() { if (gl == null) { gl = getCanvas().getContext('experimental-webgl'); } return gl; } function getResolution() { var ratio = window.devicePixelRatio || 1; return (Math.min(screen.width, screen.height) * ratio) + 'x' + (Math.max(screen.width, screen.height) * ratio); } function getGlRenderer() { if (glRenderer == null) { debugInfo = getGl().getExtension('WEBGL_debug_renderer_info'); glRenderer = debugInfo == null ? 'unknown' : getGl().getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); } return glRenderer; } function getModels() { if (models == null) { var gpu = getGlRenderer(), matches = gpu.match(/^apple\s+([_a-z0-9-]+)\s+gpu$/i), res = getResolution(); models = ['unknown']; if (matches) { for (var i = 0; i < devices.length; i ++) { var device = devices[i]; if (matches[1].toLowerCase() == device[0] && res == device[1]) { models = device[2]; break; } } } } return models; } if (window.MobileDevice == undefined) { window.MobileDevice = {}; } window.MobileDevice.getGlRenderer = getGlRenderer; window.MobileDevice.getModels = getModels; window.MobileDevice.getResolution = getResolution; window.MobileDevice.is = function (match) { var currentModels = getModels(); match = match.toLowerCase().replace(/\s+$/, '') + ' '; for (var i = 0; i < currentModels.length; i ++) { var model = currentModels[i].toLowerCase() + ' '; if (0 === model.indexOf(math)) { return true; } } return false; }; })();