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 原型链学习总结
Oct 29 Javascript
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
JS 各种网页尺寸判断实例方法
Apr 18 Javascript
jquery+html5烂漫爱心表白动画代码分享
Aug 24 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
Apr 30 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
浅谈node.js 命令行工具(cli)
May 10 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
es6中new.target的作用和使用场景简单示例分析
Mar 14 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
python实现每次处理一个字符的三种方法
2014/10/09 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
个人授权委托书
2014/04/03 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
关键在于落实心得体会
2014/09/03 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
golang 如何通过反射创建新对象
2021/04/28 Golang
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle