/*
* 全局数据管理
* */
import Loger from 'Loger';
import mdetect from "mdetect";
import GlobalConfig from 'GlobalConfig';
let loger = Loger.getLoger('SystemConfig');
class SystemConfig {
constructor() {
}
//获取系统信息
static getSystemInfo() {
//检查是否是移动端
GlobalConfig.isMobile = mdetect.isMobileUA();
if (GlobalConfig.isMobile) {
loger.warn("当前设备是移动设备");
GlobalConfig.platform = "h5";//移动设备,不是ios和安卓就当H5处理
GlobalConfig.deviceType = 3;
} else {
loger.warn("当前设备是PC");
GlobalConfig.platform = "pc";
GlobalConfig.deviceType = 0;
}
if (mdetect.isIOS()) {
GlobalConfig.platform = "ios";
GlobalConfig.deviceType = 1; //"ios";
}
if (mdetect.isAndroid()) {
GlobalConfig.platform = "android"; //"android";
GlobalConfig.deviceType = 2; //"android";
}
//语言
GlobalConfig.language = "unknown";
if (navigator) {
let language = navigator.language || navigator.browserLanguage;
GlobalConfig.language = language.toLocaleLowerCase();
}
let browserInfo = this.getBrowserInfo();
GlobalConfig.explorer = browserInfo.explorer || "未知";
GlobalConfig.explorerVersion = browserInfo.explorerVersion || "未知";
GlobalConfig.os = this.detectOS();
loger.log("deviceType:" + GlobalConfig.deviceType);
loger.log("language:" + GlobalConfig.language);
loger.log("explorer:" + GlobalConfig.explorer);
loger.log("explorerVersion:" + GlobalConfig.explorerVersion);
loger.log("os:" + GlobalConfig.os);
}
//获取浏览器和信息
static getBrowserInfo() {
let Sys = {};
Sys.explorer = "unknow";
Sys.explorerVersion = "unknow";
try {
let ua = navigator.userAgent.toLowerCase();
let re = /(trident|msie|firefox|chrome|version).*?([\d.]+)/;
let m = ua.match(re);
if (!m) m = ["version/1.0.0", "version", "1.0.0"];
Sys.explorer = m[1].replace(/version/, "safari");
//判断是否是IE11
if (Sys.explorer == "trident") {
Sys.explorer = "IE11"
Sys.explorerVersion = "11.0";
loger.log("IE11", Sys);
}
else if (Sys.explorer == "msie") {
//IE
Sys.explorer = "IE"
Sys.explorerVersion = m[2];
loger.log("IE", Sys);
}
else {
//非IE
loger.log("不是IE", Sys, ua);
Sys.explorerVersion = m[2];
//QQ浏览器
if (ua.match(/qqbrowser/i) == "qqbrowser") {
var str = ua;
var pos = str.indexOf('qqbrowser/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "qqbrowser"
Sys.explorerVersion = result2;
loger.log("QQ浏览器", Sys);
}
//Mac上QQ浏览器
else if (ua.match(/qqbrowserlite/i) == "qqbrowserlite") {
var str = ua;
var pos = str.indexOf('qqbrowserlite/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "qqbrowserlite"
Sys.explorerVersion = result2;
loger.log("Mac上QQ浏览器", Sys);
}
//火狐浏览器
else if (ua.match(/firefox/i) == "firefox") {
var str = ua;
var pos = str.indexOf('firefox/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "firefox"
Sys.explorerVersion = result2;
loger.log("firefox浏览器", Sys);
}
//百度浏览器
else if (ua.match(/bidubrowser/i) == "bidubrowser") {
var str = ua;
var pos = str.indexOf('bidubrowser/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "bidubrowser"
Sys.explorerVersion = result2;
loger.log("百度浏览器", Sys);
}
//2345浏览器
else if (ua.match(/2345explorer/i) == "2345explorer") {
var str = ua;
var pos = str.indexOf('2345explorer/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "2345explorer"
Sys.explorerVersion = result2;
loger.log("2345浏览器", Sys);
}
//猎豹浏览器
else if (ua.match(/lbbrowser/i) == "lbbrowser") {
var str = ua;
var pos = str.indexOf('lbbrowser/');
var result = str.substring(pos + 1);
Sys.explorer = "lbbrowser"
loger("猎豹浏览器", Sys);
}
//搜狗高速浏览器
else if (ua.match(/metasr/i) == "metasr") {
Sys.explorer = "metasr"
loger.log("搜狗高速浏览器", Sys);
}
//欧朋浏览器
else if (ua.match(/opr/i) == "opr") {
var str = ua;
var pos = str.indexOf('opr/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "opr"
Sys.explorerVersion = result2;
loger.log("欧朋浏览器", Sys);
}
//UC浏览器
else if (ua.match(/ubrowser/i) == "ubrowser") {
var str = ua;
var pos = str.indexOf('ubrowser/');
var result = str.substring(pos + 1);
var result1 = result.indexOf('/');
var result2 = result.substring(result1 + 1);
Sys.explorer = "UC浏览器"
Sys.explorerVersion = result2;
loger.log("UC浏览器", Sys);
}
else if (Sys.explorer == "chrome") {
if (window.clientInformation.languages) {
let versionNum=0;
let versions=[];
if(Sys.explorerVersion){
versions=Sys.explorerVersion.split(".");
}
versionNum=parseInt(versions[0]);
loger.log("versionNum", versionNum);
if (window.clientInformation.languages.length > 2) {
Sys.explorer = "chrome";
loger.log("chrome", Sys);
} else if (window.clientInformation.languages.length == 2&&versionNum<=55) {
var _track = 'track' in document.createElement('track');
var webstoreKeysLength = window.chrome && window.chrome.webstore ? Object.keys(window.chrome.webstore).length : 0;
if (_track) {
webstoreKeysLength > 1 ? '360ee' : '360se';
if (webstoreKeysLength > 1) {
//loger.log("当前是360极速浏览器", Sys);
Sys.explorer = "360极速";
} else {
loger.log("当前是360安全浏览器", Sys);
Sys.explorer = "360安全";
}
}
}
//61版本的chrome速浏览器在有的系统会被误认为是360极速,需要处理
if (Sys.explorer == "360极速") {
if (Sys.explorerVersion.indexOf("60.") == 0 ||
Sys.explorerVersion.indexOf("61.") == 0) {
//这个是chrome浏览器
Sys.explorer = "chrome";
}
}
}
}
//safari浏览器
else if (ua.match(/mac/i) == "mac") {
if (ua.match(/safari/i) == "safari") {
Sys.explorer = "safari"
loger.log("safari", Sys);
loger.log(JSON.stringify(Sys));
}
}
}
} catch (err) {
}
return Sys;
}
//系统信息
static detectOS() {
var sUserAgent = navigator.userAgent;
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
if (isMac) return "Mac";
var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
if (isUnix) return "Unix";
var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
if (isLinux) return "Linux";
if (isWin) {
var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
if (isWin2K) return "Win2000";
var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
if (isWinXP) return "WinXP";
var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
if (isWin2003) return "Win2003";
var isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
if (isWinVista) return "WinVista";
var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
if (isWin7) return "Win7";
}
return "other";
}
}
export default SystemConfig;