UNPKG

amfe-env

Version:

Parsing User-Agent on a mobile device, could detecting what os/browser/app.

93 lines (81 loc) 2.51 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _version = require('./version'); var _version2 = _interopRequireDefault(_version); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ua = window.navigator.userAgent; var browser; var matched; if (matched = ua.match(/(?:UCWEB|UCBrowser\/)([\d\.]+)/)) { browser = { name: 'UC', isUC: true, version: new _version2.default(matched[1]) }; } else if (matched = ua.match(/MQQBrowser\/([\d\.]+)/)) { browser = { name: 'QQ', isQQ: true, version: new _version2.default(matched[1]) }; } else if (matched = ua.match(/(?:Firefox|FxiOS)\/([\d\.]+)/)) { browser = { name: 'Firefox', isFirefox: true, version: new _version2.default(matched[1]) }; } else if ((matched = ua.match(/MSIE\s([\d\.]+)/)) || (matched = ua.match(/IEMobile\/([\d\.]+)/))) { browser = { version: new _version2.default(matched[1]) }; if (ua.match(/IEMobile/)) { browser.name = 'IEMobile'; browser.isIEMobile = true; } else { browser.name = 'IE'; browser.isIE = true; } if (ua.match(/Android|iPhone/)) { browser.isIELikeWebkit = true; } } else if (matched = ua.match(/(?:Chrome|CriOS)\/([\d\.]+)/)) { browser = { name: 'Chrome', isChrome: true, version: new _version2.default(matched[1]) }; if (ua.match(/Version\/[\d+\.]+\s*Chrome/)) { browser.name = 'Chrome Webview'; browser.isWebview = true; } } else if (!!ua.match(/Safari/) && (matched = ua.match(/Android[\s\/]([\d\.]+)/))) { browser = { name: 'Android', isAndroid: true, version: new _version2.default(matched[1]) }; } else if (ua.match(/iPhone|iPad|iPod/)) { if (ua.match(/Safari/) && (matched = ua.match(/Version\/([\d\.]+)/))) { browser = { name: 'Safari', isSafari: true, version: new _version2.default(matched[1]) }; } else if (matched = ua.match(/OS ([\d_\.]+) like Mac OS X/)) { browser = { name: 'iOS Webview', isWebview: true, version: new _version2.default(matched[1].replace(/\_/g, '.')) }; } } /* istanbul ignore if */ if (!browser) { browser = { name: 'unknown', version: new _version2.default('0.0.0') }; } exports.default = browser;