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 相关文章推荐
javascript的事件描述
Sep 08 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
freemarker判断对象是否为空的方法
Aug 13 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
简单实现node.js图片上传
Dec 18 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
微信小程序选择图片控件
Jan 19 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
Oracle 常见问题解答
2006/10/09 PHP
PHP+DBM的同学录程序(1)
2006/10/09 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
一个PHP的String类代码
2010/04/20 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
详解javascript函数的参数
2015/11/10 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python open()文件处理使用介绍
2014/11/30 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
群众路线剖析材料
2014/02/02 职场文书
读书小明星事迹材料
2014/05/03 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
工程承包协议书范本
2014/09/29 职场文书
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
教你部署vue项目到docker
2022/04/05 Vue.js