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 控制CSS样式表
Aug 20 Javascript
jquery isType() 类型判断代码
Feb 14 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
javascript中处理时间戳为日期格式的方法
Jan 02 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
学习JavaScript事件流和事件处理程序
Jan 25 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
jQuery点击输入框显示验证码图片
May 19 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
webpack配置导致字体图标无法显示的解决方法
Mar 06 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
layui递归实现动态左侧菜单
Jul 26 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 max_execution_time执行时间问题
2011/07/17 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Python之用户输入的实例
2018/06/22 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python实现图片转字符画
2021/02/19 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
手术室护士自我鉴定
2013/10/14 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
校园十大歌手策划书
2014/02/01 职场文书
需求分析说明书
2014/05/09 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
Nginx的gzip相关介绍
2022/05/11 Servers
Python自动化实战之接口请求的实现
2022/05/30 Python