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实现面向对象类的功能书写技巧
Mar 07 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
Dec 30 Javascript
加载 Javascript 最佳实践
Oct 30 Javascript
javascript实现促销倒计时+fixed固定在底部
Sep 18 Javascript
javascript屏蔽右键代码
May 15 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
Mar 05 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
jQuery Mobile操作HTML5的常用函数总结
May 17 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
Vue制作Todo List网页
Apr 26 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
Jun 14 jQuery
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
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 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
初识PHP
2014/09/28 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
PHP7 windows支持
2021/03/09 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
解读python logging模块的使用方法
2018/04/17 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
高二政治教学反思
2014/02/01 职场文书
《王二小》教学反思
2014/02/27 职场文书
公务员保密承诺书
2014/03/27 职场文书
竞聘上岗演讲
2014/05/19 职场文书
质量提升方案
2014/06/16 职场文书
美容院管理规章制度
2015/08/05 职场文书
学习委员竞选稿
2015/11/20 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang