部分项目中可能需要检测用户当前的浏览器环境,比如操作系统是window还是iOS,检测用户是什么浏览器访问的(ChromeIE 等),网上很多类似的代码,发现很多博客中针对IE11的浏览器的检测都失效了,整理相关资料总结如下,以便后面再次使用。

获取操作系统信息

返回 Windows 10, Windows 7, Mac

  // 获取操作系统信息  
  function getOsInfo (){  
  var userAgent = navigator.userAgent.toLowerCase();  
  var name = 'Unknown';  
  var version = 'Unknown';  
  if (userAgent.indexOf('win') > -1) {  
    name = 'Windows';  
  if (userAgent.indexOf('windows nt 5.0') > -1) {  
      version = 'Windows 2000';  
  } else if (userAgent.indexOf('windows nt 5.1') > -1 || userAgent.indexOf('windows nt 5.2') > -1) {  
      version = 'Windows XP';  
  } else if (userAgent.indexOf('windows nt 6.0') > -1) {  
      version = 'Windows Vista';  
  } else if (userAgent.indexOf('windows nt 6.1') > -1 || userAgent.indexOf('windows 7') > -1) {  
      version = 'Windows 7';  
  } else if (userAgent.indexOf('windows nt 6.2') > -1 || userAgent.indexOf('windows 8') > -1) {  
      version = 'Windows 8';  
  } else if (userAgent.indexOf('windows nt 6.3') > -1) {  
      version = 'Windows 8.1';  
  } else if (userAgent.indexOf('windows nt 6.2') > -1 || userAgent.indexOf('windows nt 10.0') > -1) {  
      version = 'Windows 10';  
  } else {  
      version = 'Unknown';  
  }  
  } else if (userAgent.indexOf('iphone') > -1) {  
    name = 'iPhone';  
  } else if (userAgent.indexOf('mac') > -1) {  
    name = 'Mac';  
  } else if (userAgent.indexOf('x11') > -1 || userAgent.indexOf('unix') > -1 || userAgent.indexOf('sunname') > -1 || userAgent.indexOf('bsd') > -1) {  
    name = 'Unix';  
  } else if (userAgent.indexOf('linux') > -1) {  
    if (userAgent.indexOf('android') > -1) {  
      name = 'Android';  
  } else {  
      name = 'Linux';  
  }  
  } else {  
    name = 'Unknown';  
  }  
  return { name, version };  
},

获取浏览器信息

返回 Chrome, Safari, Firefox, IE11

function getBrowser () {  
  var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  
  
  
  var isIE11 = userAgent.toLowerCase().match(/rv:([\d.]+)\) like gecko/); // IE 11中userAgent已经不包含'msie'所以用'msie'不能判断IE 11  
  var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器  
  var isIE = (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) || isIE11; //判断是否IE浏览器  
  var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器  
  var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器  
  var isSafari = userAgent.indexOf("Safari") > -1  
  && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器  
  var isChrome = userAgent.indexOf("Chrome") > -1  
  && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器  
  
  if (isIE) {  
    var reIE = new RegExp("MSIE (\\d+\\.\\d+);");  
  reIE.test(userAgent);  
  var fIEVersion = parseFloat(RegExp\["$1"\]);  
  if (fIEVersion == 7) {  
      return "IE7";  
  } else if (fIEVersion == 8) {  
      return "IE8";  
  } else if (fIEVersion == 9) {  
      return "IE9";  
  } else if (fIEVersion == 10) {  
      return "IE10";  
  } else if(isIE11){ // IE 11中userAgent已经不包含'msie'所以用'msie'不能判断IE 11  
  return "IE11";  
  }  else {  
      return "IE";  
  }//IE版本过低  
  }  
  if (isOpera) {  
    return "Opera";  
  }  
  if (isEdge) {  
    return "Edge";  
  }  
  if (isFF) {  
    return "Firefox";  
  }  
  if (isSafari) {  
    return "Safari";  
  }  
  if (isChrome) {  
    return "Chrome";  
  }  
  return '--'  
};

自己整理的网上资料, 如有笔误 ~ 请莫见怪!


ZHAO_
449 声望11 粉丝

前端开发