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 相关文章推荐
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
Apr 12 Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
JS焦点图切换,上下翻转
May 12 Javascript
基于jquery完美拖拽,可返回拖动轨迹
Mar 29 Javascript
jquery验证表单中的单选与多选实例
Aug 18 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
Jan 19 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
Feb 14 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
JavaScript实现图片懒加载的方法分析
Jul 05 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 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
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
linux下编译安装memcached服务
2014/08/03 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
js打开新窗口方法整理
2014/02/17 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Python 和 JS 有哪些相同之处
2017/11/23 Python
django admin组件使用方法详解
2019/07/19 Python
python函数的作用域及关键字详解
2019/08/20 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
Python 多进程原理及实现
2020/12/21 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
银行职员思想汇报
2013/12/31 职场文书
技能竞赛活动方案
2014/02/21 职场文书
公司会议策划方案
2014/05/17 职场文书
政治学求职信
2014/06/03 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
监守自盗观后感
2015/06/10 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python
python中pymysql包操作数据库方法
2022/04/19 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS