对各种类型的设备的检测,以及所使用的浏览器的类型

  1. function detect(ua) {
  2. var os = this.os = {};
  3. var browser = this.browser = {};
  4. var webkit = ua.match(/Web[kK]it[\/]{0,1}([\d.]+)/); //返回一个匹配的字符串的数组
  5. var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
  6. var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
  7. var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
  8. var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
  9. var webos = ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/);
  10. var touchpad = webos && ua.match(/TouchPad/);
  11. var kindle = ua.match(/Kindle\/([\d.]+)/);
  12. var silk = ua.match(/Silk\/([\d._]+)/);
  13. var blackberry = ua.match(/(BlackBerry).*Version\/([\d.]+)/);
  14. var bb10 = ua.match(/(BB10).*Version\/([\d.]+)/);
  15. var rimtabletos = ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/);
  16. var playbook = ua.match(/PlayBook/);
  17. var chrome = ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/);
  18. var firefox = ua.match(/Firefox\/([\d.]+)/);
  19. var ie = ua.match(/MSIE ([\d.]+)/);
  20. var safari = webkit && ua.match(/Mobile\//) && !chrome;
  21. var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;
  22. var ie = ua.match(/MSIE\s([\d.]+)/);
  23.  
  24. if (browser.webkit = !!webkit) browser.version = webkit[1];
  25.  
  26. if (android) os.android = true, os.version = android[2];
  27. if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');
  28. if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');
  29. if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
  30. if (webos) os.webos = true, os.version = webos[2];
  31. if (touchpad) os.touchpad = true;
  32. if (blackberry) os.blackberry = true, os.version = blackberry[2];
  33. if (bb10) os.bb10 = true, os.version = bb10[2];
  34. if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];
  35. if (playbook) browser.playbook = true;
  36. if (kindle) os.kindle = true, os.version = kindle[1];
  37. if (silk) browser.silk = true, browser.version = silk[1];
  38. if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;
  39. if (chrome) browser.chrome = true, browser.version = chrome[1];
  40. if (firefox) browser.firefox = true, browser.version = firefox[1];
  41. if (ie) browser.ie = true, browser.version = ie[1];
  42. if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;
  43. if (webview) browser.webview = true;
  44. if (ie) browser.ie = true, browser.version = ie[1];
  45.  
  46. os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||
  47. (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));
  48. os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos || blackberry || bb10 ||
  49. (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\/([\d.]+)/)) ||
  50. (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));
  51.  
  52. return {
  53. browser: browser,
  54. os: os
  55. };
  56. }
  57.  
  58. var detectObj = detect(navigator.userAgent);

设备类型检测大全---userAgent的更多相关文章

  1. Swift - 各种手势检测大全(UIGestureRecognizer及其子类)

    UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1,UISwipeGestureRecognizer:滑动(快速移动) 1 2 3 4 5 6 7 8 ...

  2. 通过JS检测360浏览器

    如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一 ...

  3. userAgent

    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...

  4. 通过userAgent判断手机浏览器类型

    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...

  5. 几个常见移动平台浏览器的User-Agent

    之前介绍的手机站跳转url的一片文稿中提到,依据User Agent判断终端的方法.(文章地址:http://www.cnblogs.com/dereksunok/p/3664169.html ) 若 ...

  6. 极其实用的JS单行代码

    个人博客 地址:https://www.wenhaofan.com/a/20190629211647 1.强制布尔值 要将变量强制转换为布尔值而不更改其值: const myBoolean = !!  ...

  7. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  8. 前端开发面试题JS2

    21.如何判断一个对象是否属于某个类? 使用instanceof if(a instanceof Person){ alert('yes'); } 22.new操作符具体干了什么呢? (1)创建一个空 ...

  9. js判断是否为手机浏览器

    JS判断手机浏览器 判断原理: JavaScript是前端开发的主要语言,我们可以通过 编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根 ...

随机推荐

  1. Hbase 技术细节笔记(上)

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张秀云 前言 最近在跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的 ...

  2. Linux之不得不说的init(Linux启动级别的含义 init 0-6)

    init 0:关机: init 1:单用户模式(只root进行维护): init 2:多用户 init 3:完全多用户 init 4:安全模式 init 5:图形化 init 6:重启 可以在/etc ...

  3. Free Goodies UVA - 12260 贪心

      Free Goodies Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Submit ...

  4. LeetCode-2 Keys Keyboard

    package Classify.DP.Medium; import org.junit.jupiter.api.Test; /** Initially on a notepad only one c ...

  5. oracle基本查询语句总结

    spool E:\基本查询.txt 将命令行的语句写入到指定的目下的指定的文件中 host cls 清屏命令 show user 显示当前操作的用户 desc emp 查看表结构 select * f ...

  6. DevOps之存储和数据库

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <数据(Data)> 了解有关数据部分.涉及存储及数据库的概念:知识与技能的层次( ...

  7. [转载]AI教师正来势汹汹,教师饭碗堪优

    (原文标题:开门,机器人老师来了) 一. 开门,机器人老师到了 国庆几天,河南刚刚上演一幕新科技的大戏: 计算机和人展开了为期四天的人机大战.这一次,对垒的双方不再是李世乭和阿尔法狗,而是教师和人工智 ...

  8. mysql在cmd命令下执行数据库操作

    windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下的mysql中是导入不进去的,因为mysql数据库本身就有默认的导入文件大 ...

  9. 张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”

    完成环境配置后开始第一个简单项目.打开 Visual Studio 新建一个 Xamarin.Android 项目 "HelloAndroid".(GitHub:https://g ...

  10. vim下单行长文本的时候卡顿解决办法

    在vim编辑文件时,若单行过长,可能会导致vim卡顿,严重影响使用体验 估计是syntax匹配效率过滥导致.. 偶尔发现了一个临时的解决办法就是关掉syntax然后再打开,即在命令模式下 :synta ...