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 相关文章推荐
摘自启点的main.js
Apr 20 Javascript
jquery创建div 实现代码
Apr 27 Javascript
javascript与jquery中跳出循环的区别总结
Nov 04 Javascript
将中国标准时间转换成标准格式的代码
Mar 20 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
Feb 05 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
Javascript中With语句用法实例
May 14 Javascript
jQuery异步提交表单实例
May 30 jQuery
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
Sep 25 Javascript
抖音短视频(douyin)去水印工具的实现代码
Mar 30 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
js实现转动骰子模型
2019/10/24 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
python3.3实现乘法表示例
2014/02/07 Python
python中遍历文件的3个方法
2014/09/02 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
django中forms组件的使用与注意
2019/07/08 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
python opencv实现简易画图板
2020/08/27 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
公司年会主持词
2014/03/22 职场文书
党支部公开承诺书
2014/03/28 职场文书
食品销售计划书
2014/04/26 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
python OpenCV学习笔记
2021/03/31 Python
Java对文件的读写操作方法
2022/04/29 Java/Android