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 18 Javascript
jquery获取radio值实例
Oct 16 Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 Javascript
JavaScript汉诺塔问题解决方法
Apr 21 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
javascript用正则表达式过滤空格的实现代码
Jun 14 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
Feb 27 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
js清除浏览器缓存的几种方法
Mar 15 Javascript
inner join 内联与left join 左联的实例代码
Sep 18 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
用JS实现飞机大战小游戏
Jun 09 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
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
asp 的 分词实现代码
2007/05/24 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JS继承用法实例分析
2015/02/05 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python模拟百度登录实例详解
2016/01/20 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python调用百度REST API实现语音识别
2018/08/30 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
简短的公司员工自我评价分享
2013/11/13 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
frg-100简单操作(设置)说明
2022/04/05 无线电