javascript实现获取浏览器版本、操作系统类型


Posted in Javascript onJanuary 29, 2015

代码很简洁,功能很实用,这里就不多废话了,直接给大家奉上代码:

/**
 * Created by Administrator on 15-1-12.
 */
function BroswerUtil() {
}
BroswerUtil = {
  //检测浏览器版本
  getBrowserVersion: function () {
    var agent = navigator.userAgent.toLowerCase();
    var arr = [];
    var Browser = "";
    var Bversion = "";
    var verinNum = "";
    //IE
    if (agent.indexOf("msie") > 0) {
      var regStr_ie = /msie [\d.]+;/gi;
      Browser = "IE";
      Bversion = "" + agent.match(regStr_ie)
    }
    //firefox
    else if (agent.indexOf("firefox") > 0) {
      var regStr_ff = /firefox\/[\d.]+/gi;
      Browser = "firefox";
      Bversion = "" + agent.match(regStr_ff);
    }
    //Chrome
    else if (agent.indexOf("chrome") > 0) {
      var regStr_chrome = /chrome\/[\d.]+/gi;
      Browser = "chrome";
      Bversion = "" + agent.match(regStr_chrome);
    }
    //Safari
    else if (agent.indexOf("safari") > 0 && agent.indexOf
("chrome") < 0) {
      var regStr_saf = /version\/[\d.]+/gi;
      Browser = "safari";
      Bversion = "" + agent.match(regStr_saf);
    }
    //Opera
    else if (agent.indexOf("opera") >= 0) {
      var regStr_opera = /version\/[\d.]+/gi;
      Browser = "opera";
      Bversion = "" + agent.match(regStr_opera);
    } else {
      var browser = navigator.appName;
      if (browser == "Netscape") {
        var version = agent.split(";");
        var trim_Version = version[7].replace(/[ ]/g, 
"");
        var rvStr = trim_Version.match(/
[\d\.]/g).toString();
        var rv = rvStr.replace(/[,]/g, "");
        Bversion = rv;
        Browser = "IE"
      }
    }
    verinNum = (Bversion + "").replace(/[^0-9.]/ig, "");
    arr.push(Browser);
    arr.push(verinNum);
    return arr;
  },
  //检测是否是XX浏览器
  WB: (function () {
    var UserAgent = navigator.userAgent.toLowerCase();
    return {
      isIE6: /msie 6.0/.test(UserAgent), // IE6
      isIE7: /msie 7.0/.test(UserAgent), // IE7
      isIE8: /msie 8.0/.test(UserAgent), // IE8
      isIE9: /msie 9.0/.test(UserAgent), // IE9
      isIE10: /msie 10.0/.test(UserAgent), // IE10
      isIE11: /msie 11.0/.test(UserAgent), // IE11
      isLB: /lbbrowser/.test(UserAgent), // 猎豹浏览器
      isUc: /ucweb/.test(UserAgent), // UC浏览器
      is360: /360se/.test(UserAgent), // 360浏览器
      isBaidu: /bidubrowser/.test(UserAgent), // 百度浏览器
      isSougou: /metasr/.test(UserAgent), // 搜狗浏览器
      isChrome: /chrome/.test(UserAgent.substr(-33, 6)), // 
Chrome浏览器
      isFirefox: /firefox/.test(UserAgent), // 火狐浏览器
      isOpera: /opera/.test(UserAgent), // Opera浏览器
      isSafire: /safari/.test(UserAgent) && !/chrome/.test
(UserAgent), // safire浏览器
      isQQ: /qqbrowser/.test(UserAgent)//qq浏览器
    };
  })(),
  //检测当前操作系统
  CurrentSystem: (function () {
    var system = {
      win: false,
      mac: false,
      xll: false,
      iphone: false,
      ipoad: false,
      ipad: false,
      ios: false,
      android: false,
      nokiaN: false,
      winMobile: false,
      wii: false,
      ps: false
    };
    var ua = navigator.userAgent;
    // 检测平台
    var p = navigator.platform;
    system.win = p.indexOf('Win') == 0;
    system.mac = p.indexOf('Mac') == 0;
    system.xll = (p.indexOf('Xll') == 0 || p.indexOf('Linux') 
== 0);
    // 检测Windows操作系统
    if (system.win) {
      if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) 
{
        if (RegExp['$1'] == 'NT') {
          switch (RegExp['$2']) {
            case '5.0':
              system.win = '2000';
              break;
            case '5.1':
              system.win = 'XP';
              break;
            case '6.0':
              system.win = 'Vista';
              break;
            case '6.1':
              system.win = '7';
              break;
            case '6.2':
              system.win = '8';
              break;
            default:
              system.win = 'NT';
              break;
          }
        } else if (RegExp['$1'] == '9x') {
          system.win = 'ME';
        } else {
          system.win = RegExp['$1'];
        }
      }
    }
    // 移动设备
    system.iphone = ua.indexOf('iPhone') > -1;
    system.ipod = ua.indexOf('iPod') > -1;
    system.ipad = ua.indexOf('iPad') > -1;
    system.nokiaN = ua.indexOf('nokiaN') > -1;
    // windows mobile
    if (system.win == 'CE') {
      system.winMobile = system.win;
    } else if (system.win == 'Ph') {
      if (/Windows Phone OS (\d+.\d)/i.test(ua)) {
        system.win = 'Phone';
        system.winMobile = parseFloat(RegExp['$1']);
      }
    }
    // 检测IOS版本
    if (system.mac && ua.indexOf('Mobile') > -1) {
      if (/CPU (?:iPhone )?OS (\d+_\d+)/i.test(ua)) {
        system.ios = parseFloat(RegExp['$1'].replace('_', 
'.'));
      } else {
        system.ios = 2;    // 不能真正检测出来,所以
只能猜测
      }
    }
    // 检测Android版本
    if (/Android (\d+\.\d+)/i.test(ua)) {
      system.android = parseFloat(RegExp['$1']);
    }
    // 游戏系统
    system.wii = ua.indexOf('Wii') > -1;
    system.ps = /PlayStation/i.test(ua);
    return {
      system: system
    }
  })()
}

以上就是这款javascript封装好的检测浏览器版本和操作系统类型的代码库,希望大家能够喜欢。

Javascript 相关文章推荐
js 跨域和ajax 跨域问题小结
Jul 01 Javascript
分享27款非常棒的jQuery 表单插件
Mar 28 Javascript
很棒的学习jQuery的12个网站推荐
Apr 28 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
JavaScript调用客户端的可执行文件(示例代码)
Nov 28 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
vue双向绑定的简单实现
Dec 22 Javascript
node.js实现为PDF添加水印的示例代码
Dec 05 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
浅谈javascript中自定义模版
Jan 29 #Javascript
jQuery和AngularJS的区别浅析
Jan 29 #Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 #Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 #Javascript
使用Sticker.js实现贴纸效果
Jan 28 #Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 #Javascript
7个让JavaScript变得更好的注意事项
Jan 28 #Javascript
You might like
PHP实现动态执行代码的方法
2016/03/25 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
python实现超级马里奥
2020/03/18 Python
python opencv进行图像拼接
2020/03/27 Python
竞选部门副经理的自荐书范文
2014/02/11 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
中秋节寄语2015
2015/03/24 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
2016年寒假生活小结
2015/10/10 职场文书
导游词之岳阳楼
2019/09/25 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Python 如何解决稀疏矩阵运算
2021/05/26 Python
Python pyecharts绘制条形图详解
2022/04/02 Python