SystemConfig.js 9.1 KB
/*
 * 全局数据管理
 * */
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 String(navigator.platform)||String(sUserAgent);
  }
}
export default SystemConfig;