weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
58 lines (54 loc) • 1.45 kB
JavaScript
import { UAParser as parser } from './mini-ua-parser';
import * as env from './env';
const webEnv = Object.assign({}, env);
let userAgent = '';
try {
userAgent = navigator.userAgent.toLowerCase();
} catch (e) {}
let appInfo = '';
const params = {};
const runtimeInfo = {};
const parsedUA = new parser().getResult();
appInfo = {
platform: parsedUA.os.name || '',
osVersion: parsedUA.os.version || '',
isInAliApp: /AliApp/i.test(userAgent),
deviceModel: parsedUA.device.model,
isWindVane: /WindVane/i.test(userAgent),
};
let appVersion;
let appName;
if (appInfo.isInAliApp) {
try {
const matchResult = userAgent.match(/AliApp\(([a-z-A-Z]{1,20})\/(\d+(\.\d+){0,3})?\)/i);
if (matchResult && matchResult.length >= 3) {
appName = matchResult[1];
appVersion = matchResult[2];
}
} catch (e) {}
if (appName) {
appInfo.appName = appName;
}
if (appVersion) {
appInfo.appVersion = appVersion;
}
}
if (appInfo.appName === 'QN') {
webEnv.isQNWeb = true;
webEnv.isQNWeex = false;
}
if (window.location.search) {
const searchString = window.location.search.substring(1);
let i;
let val;
const paramsArr = searchString.split('&');
for (i = 0; i < paramsArr.length; i += 1) {
val = paramsArr[i].split('=');
params[val[0]] = decodeURIComponent(val[1]);
}
}
webEnv.appInfo = appInfo;
webEnv.params = params;
webEnv.runtimeInfo = runtimeInfo;
webEnv.UAParser = parser;
export { webEnv };