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 相关文章推荐
jQuery 处理表单元素的代码
Feb 15 Javascript
JavaScript获取并更改input标签name属性的方法
Jul 02 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 Javascript
用JavaScript和jQuery实现瀑布流
Mar 19 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 Javascript
微信小程序工具函数封装
Oct 28 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
jquery简易手风琴插件的封装
Oct 13 jQuery
vue3使用vue-count-to组件的实现
Dec 25 Vue.js
浅谈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中instanceof 与 is_a()区别分析
2015/03/03 PHP
浅谈php的优缺点
2015/07/14 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
python实现贪吃蛇游戏
2020/03/21 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
django下创建多个app并设置urls方法
2020/08/02 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
运动员口号
2014/06/09 职场文书
2014年教学工作总结
2014/11/13 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
解析MySQL binlog
2021/06/11 MySQL
Golang解析JSON对象
2022/04/30 Golang