JS判断浏览器类型与操作系统的方法分析


Posted in Javascript onApril 30, 2020

本文实例讲述了JS判断浏览器类型与操作系统的方法。分享给大家供大家参考,具体如下:

navigator.userAgent : userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。

navigator.platform : platform 属性是一个只读的字符串,声明了运行浏览器的操作系统和(或)硬件平台。

判断浏览器类型

IE浏览器

ie = ua.match( /MSIE\s([\d\.]+)/ ) || ua.match( /(?:trident)(?:.*rv:([\w.]+))?/i ),

IE浏览器版本号

/msie 8.0/.test(navigator.userAgent.toLowerCase())

微信浏览器

/micromessenger/.test(navigator.userAgent.toLowerCase())

chrome

/chrome/.test(navigator.userAgent.toLowerCase())

firefox

/safari/.test(navigator.userAgent.toLowerCase())

opera

/micromessgenger/.test(navigator.userAgent.toLowerCase())

判断操作系统类型

win操作系统

navigator.platform == "Win32"
 navigator.platform == "Windows"

mac操作系统

navigator.platform == "Mac68K"
   navigator.platform == "MacPPC"
   navigator.platform == "Macintosh"
   navigator.platform == "MacIntel"

andorid操作系统

if(/Linux/i.test(navigator.userAgent)){
     if(/android/i.test(navigator.userAgent.toLowerCase())){
       return "android";
     }
   }
/**
     * @description 简单的浏览器检查结果。
     *
     * * `webkit` webkit版本号,如果浏览器为非webkit内核,此属性为`undefined`。
     * * `chrome` chrome浏览器版本号,如果浏览器为chrome,此属性为`undefined`。
     * * `ie` ie浏览器版本号,如果浏览器为非ie,此属性为`undefined`。**暂不支持ie10+**
     * * `firefox` firefox浏览器版本号,如果浏览器为非firefox,此属性为`undefined`。
     * * `safari` safari浏览器版本号,如果浏览器为非safari,此属性为`undefined`。
     * * `opera` opera浏览器版本号,如果浏览器为非opera,此属性为`undefined`。
     *
     * @property {Object} [browser]
     */
    browser: (function( ua ) {
      var ret = {},
        webkit = ua.match( /WebKit\/([\d.]+)/ ),
        chrome = ua.match( /Chrome\/([\d.]+)/ ) ||
          ua.match( /CriOS\/([\d.]+)/ ),

        ie = ua.match( /MSIE\s([\d\.]+)/ ) ||
          ua.match( /(?:trident)(?:.*rv:([\w.]+))?/i ),
        firefox = ua.match( /Firefox\/([\d.]+)/ ),
        safari = ua.match( /Safari\/([\d.]+)/ ),
        opera = ua.match( /OPR\/([\d.]+)/ );

      webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));
      chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));
      ie && (ret.ie = parseFloat( ie[ 1 ] ));
      firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));
      safari && (ret.safari = parseFloat( safari[ 1 ] ));
      opera && (ret.opera = parseFloat( opera[ 1 ] ));

      return ret;
    })( navigator.userAgent ),

    /**
     * @description 操作系统检查结果。
     *
     * * `android` 如果在android浏览器环境下,此值为对应的android版本号,否则为`undefined`。
     * * `ios` 如果在ios浏览器环境下,此值为对应的ios版本号,否则为`undefined`。
     * @property {Object} [os]
     */
    os: (function( ua ) {
      var ret = {},

        // osx = !!ua.match( /\(Macintosh\; Intel / ),
        android = ua.match( /(?:Android);?[\s\/]+([\d.]+)?/ ),
        ios = ua.match( /(?:iPad|iPod|iPhone).*OS\s([\d_]+)/ );

      // osx && (ret.osx = true);
      android && (ret.android = parseFloat( android[ 1 ] ));
      ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));

      return ret;
    })( navigator.userAgent ),
Javascript 相关文章推荐
javascript自执行函数之伪命名空间封装法
Dec 25 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
Jul 08 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
Nov 14 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
Apr 16 Javascript
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
详解jQuery停止动画——stop()方法的使用
Dec 14 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 Javascript
Vue中对iframe实现keep alive无刷新的方法
Jul 23 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 Javascript
js实现弹框效果
Mar 24 Javascript
JavaScript自定义超时API代码实例
Apr 30 #Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 #Javascript
JavaScript find()方法及返回数据实例
Apr 30 #Javascript
js this 绑定机制深入详解
Apr 30 #Javascript
JS 图片压缩原理与实现方法详解
Apr 29 #Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 #Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 #Javascript
You might like
各种战术和打法的原创者
2020/03/04 星际争霸
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
php与js的区别是什么
2013/08/05 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
Python实现文件内容批量追加的方法示例
2017/08/29 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
python实现简单颜色识别程序
2020/02/19 Python
Python Django view 两种return的实现方式
2020/03/16 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
《金色的脚印》教后反思
2014/04/23 职场文书
大学生毕业求职信
2014/06/12 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
门店店长岗位职责
2015/04/14 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
医院见习总结
2015/06/24 职场文书
结婚十年感言
2015/07/31 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL