JavaScript判断系统和浏览器
  NBoAB21qwqrr 28天前 39 0

在做项目的时候,Web端需要适配移动端,且部分参数需要判断对应系统或浏览器。

在IOS中,因为高版本的系统Safari浏览器采用了Mac的内核,所以导致普通的判断无法识别到对应系统。
(userAgent.match(/(Macintosh)/) && navigator.maxTouchPoints > 1) 能有效识别是apple产品,且是触屏的,通过此方法能识别高版本的IOS_Safari。

Navigator 接口的 maxTouchPoints 只读属性返回当前设备支持的最大同时触摸接触点数。

if (navigator.maxTouchPoints > 1) {
  // 浏览器支持多点触控
}

识别对应系统和浏览器代码:

/* 匹配系统 */
function detectDeviceType(userAgent) {
  if (/(iPhone|iPad|iPod|iOS)/i.test(userAgent) || (userAgent.match(/(macintosh)/) && navigator.maxTouchPoints > 1)) {
    return 'iOS';
  }
  else if (/android/i.test(userAgent)) {
    return 'Android';
  }
  else {
    return 'PC';
  }
}
/* 匹配浏览器 */
function detectBrowser(userAgent) {
  if (/safari/i.test(userAgent) && !/(chrome|crios|crmo|edg|edge)/i.test(userAgent)) {
    return 'Safari';
  } else if (/(chrome|crios|crmo)/i.test(userAgent) && !/(edg|edge)/i.test(userAgent)) {
    return 'Chrome';
  } else if (/(edg|edge|edgios|edga|edg)/i.test(userAgent)) {
    return 'Edge';
  } else if (/(firefox|fxios)/i.test(userAgent)) {
    return 'Firefox';
  } else if (/xiaomi/i.test(userAgent)) {
    return 'Xiaomi';
  } else if (/huawei/i.test(userAgent)) {
    return 'Huawei';
  } else if (/samsung/i.test(userAgent)) {
    return 'Samsung';
  } else {
    return 'Other';
  }
}
/*系统_浏览器*/
function joinSource() {
  const userAgent = navigator.userAgent.toLowerCase();
  var sys = detectDeviceType(userAgent);
  if (sys == "PC") {
    return "PC_Browser";
  } else if (sys == "Android") {
    return sys + "_" + detectBrowser(userAgent);
  } else if (sys == "iOS") {
    return sys + "_" + detectBrowser(userAgent);
  }
}

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 28天前 0

暂无评论

推荐阅读
  5kfjjuqwphwR   4天前   29   0   0 JavaScript
  nOXnSDLlp3zQ   6天前   31   0   0 JavaScript
NBoAB21qwqrr