UNPKG

asia-weex-vue-render4light

Version:

Web renderer for weex project written in Vue DSL.

180 lines (164 loc) 3.94 kB
import './version' import './params' const lib = window.lib || (window.lib = {}) const env = lib.env || (lib.env = {}) const ua = window.navigator.userAgent let match /** * os */ match = ua.match(/Windows\sPhone\s(?:OS\s)?([\d.]+)/) if (match) { /** * @type {Object} * @memberof lib.env * @property {String} name - os name, e.g. Android/AndroidPad/iPhone/iPod/iPad/Windows Phone/unknown, etc. * @property {lib.env~Version} version - os version. * @property {Boolean} isWindowsPhone * @property {Boolean} isIPhone - is iPhone/iTouch * @property {Boolean} isIPad * @property {Boolean} isIOS * @property {Boolean} isAndroid * @property {Boolean} isAndroidPad */ env.os = { name: 'Windows Phone', isWindowsPhone: true, version: match[1] } } else if (!!ua.match(/Safari/) && (match = ua.match(/Android[\s/]([\d.]+)/))) { env.os = { version: match[1] } if ((ua.match(/Mobile\s+Safari/))) { env.os.name = 'Android' env.os.isAndroid = true } else { env.os.name = 'AndroidPad' env.os.isAndroidPad = true } } else if ((match = ua.match(/(iPhone|iPad|iPod)/))) { const name = match[1] match = ua.match(/OS ([\d_.]+) like Mac OS X/) env.os = { name: name, isIPhone: (name === 'iPhone' || name === 'iPod'), isIPad: name === 'iPad', isIOS: true, version: match && match[1].split('_').join('.') || '' } } else { env.os = { name: 'unknown', version: '0.0.0' } } if (lib.version) { env.os.version = lib.version(env.os.version) } /** * browser */ match = ua.match(/(?:UCWEB|UCBrowser\/)([\d.]+)/) if (match) { /** * @type {Object} * @memberof env * @property {String} name - browser name,e.g. UC/QQ/Firefox/Chrome/Android/Safari/iOS Webview/Chrome Webview/IE/IEMobile/unknown, etc. * @property {env~Version} version - browser version. * @property {Boolean} isUC * @property {Boolean} isQQ * @property {Boolean} isIE * @property {Boolean} isIEMobile * @property {Boolean} isIELikeWebkit * @property {Boolean} isChrome * @property {Boolean} isAndroid * @property {Boolean} isSafari * @property {Boolean} isWebview */ env.browser = { name: 'UC', isUC: true, version: match[1] } } else if ((match = ua.match(/MQQBrowser\/([\d.]+)/))) { env.browser = { name: 'QQ', isQQ: true, version: match[1] } } else if ((match = ua.match(/Firefox\/([\d.]+)/))) { env.browser = { name: 'Firefox', isFirefox: true, version: match[1] } } else if ((match = ua.match(/MSIE\s([\d.]+)/)) || (match = ua.match(/IEMobile\/([\d.]+)/))) { env.browser = { version: match[1] } if (ua.match(/IEMobile/)) { env.browser.name = 'IEMobile' env.browser.isIEMobile = true } else { env.browser.name = 'IE' env.browser.isIE = true } if (ua.match(/Android|iPhone/)) { env.browser.isIELikeWebkit = true } } else if ((match = ua.match(/(?:Chrome|CriOS)\/([\d.]+)/))) { env.browser = { name: 'Chrome', isChrome: true, version: match[1] } if (ua.match(/Version\/[\d+.]+\s*Chrome/)) { env.browser.name = 'Chrome Webview' env.browser.isWebview = true } } else if (!!ua.match(/Safari/) && (match = ua.match(/Android[\s/]([\d.]+)/))) { env.browser = { name: 'Android', isAndroid: true, version: match[1] } } else if (ua.match(/iPhone|iPad|iPod/)) { if (ua.match(/Safari/)) { match = ua.match(/Version\/([\d.]+)/) env.browser = { name: 'Safari', isSafari: true, version: match && match[1] || '' } } else { match = ua.match(/OS ([\d_.]+) like Mac OS X/) env.browser = { name: 'iOS Webview', isWebview: true, version: match && match[1].replace(/_/g, '.') || '' } } } else { env.browser = { name: 'unknown', version: '0.0.0' } } if (lib.version) { env.browser.version = lib.version(env.browser.version) }