ifui
Version:
87 lines (84 loc) • 1.84 kB
JavaScript
/*
* @Author: lllevi
* @Date: 2018-06-30 10:24:08
* @Last Modified by: lllevi
* @Last Modified time: 2018-06-30 13:40:06
*/
let canvas
let gl
let glRenderer
let models
let devices = {
'Apple A7 GPU': {
1136: ['iPhone 5', 'iPhone 5s'],
2048: ['iPad Air', 'iPad Mini 2', 'iPad Mini 3']
},
'Apple A8 GPU': {
1136: ['iPod touch (6th generation)'],
1334: ['iPhone 6'],
2001: ['iPhone 6 Plus'],
2048: ['iPad Air 2', 'iPad Mini 4']
},
'Apple A9 GPU': {
1136: ['iPhone SE'],
1334: ['iPhone 6s'],
2001: ['iPhone 6s Plus'],
2224: ['iPad Pro (9.7-inch)'],
2732: ['iPad Pro (12.9-inch)']
},
'Apple A10 GPU': {
1334: ['iPhone 7'],
2001: ['iPhone 7 Plus']
},
'Apple A11 GPU': {
1334: ['iPhone 8'],
2208: ['iPhone 8 Plus'],
2436: ['iPhone X']
}
}
function getCanvas () {
if (!canvas) {
canvas = document.createElement('canvas')
}
return canvas
}
function getGl () {
if (!gl) {
gl = getCanvas().getContext('experimental-webgl')
}
return gl
}
function getScreenWidth () {
return Math.max(screen.width, screen.height) * (window.devicePixelRatio || 1)
}
function getGlRenderer () {
if (!glRenderer) {
var debugInfo = getGl().getExtension('WEBGL_debug_renderer_info')
glRenderer = !debugInfo ? 'unknown' : getGl().getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)
}
return glRenderer
}
function getModels () {
if (!models) {
var device = devices[getGlRenderer()]
if (device === undefined) {
models = ['unknown']
} else {
models = device[getScreenWidth()]
if (models === undefined) {
models = ['unknown']
}
}
}
return models
}
function isIPhoneX () {
if (getModels().join(' or ') === 'iPhone X') {
return true
}
return false
}
export default {
isIPhoneX,
getModels
}