下面的JavaScript代码,不仅可以判断PC端浏览器类型,还可以判断安卓、iOS、其他智能手机、平板电脑或游戏系统。

  说废话貌似不是我的风格哈,直接上代码吧:

 var client = function(){
      //呈现引擎
      var engine ={
           ie : 0,
           gecko : 0,
           webkit : 0,
           khtml : 0,
           opera : 0, 

           ver : null
      };
      //浏览器
      var browser = {
           ie : 0,
           firefox :0,
           safari  : 0,
           konq :0,
           opera : 0,
           chrome : 0, 

           ver : null
      }; 

      var system ={
           win :false,
           max : false,
           x11 : false, 

           //移动设备
           iphone : false ,
           ipod : false,
           ipad : false,
           ios  : false,
           android : false,
           nokiaN : false,
           winMoble : false, 

           //游戏系统
           wii :false,
           ps : false
      }; 

      var ua =navigator.userAgent; 

      //Opera 9以后出现了两种字符串代理的方式 一种方式就是将自身标识另外一个浏览器 另外一种方式就是标志自己为firefox或者IE
      //在后面这种情况下 用户代理字符串实际上与其他浏览器返回的相同--既没有opera的字样,也不包含opera的版本信息
      //因此判断浏览器先从opera开始
      if(winddow.opera){
           engine.ver = browser.ver = window.opera.version();
           egine.opera = browser.opera = parseFloat(engine.ver);
       //第二个检测WebKit 是因为WebKit的用户代理字Gecko"和"HTMKL"的字符串 所以如果首先检测他们都有错误的结论
      }else if (/AppleWebKit\/(\S+)/.test(ua)){
           engin.ver = RegExp["$1"];
           engine.webkit = parseFloat(engine.ver); 

           //确定是chrome还是Safari
           if(/Chrome\/(\S+)/.test(ua){
                browser.ver = RegExp["$1"];
                browser.chrome = parseFloat(brower.ver);
           }else if(/Version\/(+\S)/.test(ua)){//safari 3.0后增加了Version属性
                browser.ver = RegExp["$1"];
                browser.safari = parseFloat(brower.ver);
           }else{
                var safariVersion = 1;
                if(engine.webkit<100){
                     safariVersion = 1;
                }else if(engine.ver<312){
                     safariVersion = 1.2;
                }else if(engine.ver<412){
                     safariVersion = 1.3;
                }else{
                     safariVersion = 2;
                } 

                browser.safari = browser.ver = safariVersion;
           }
      }else if(/KHTML\/(\S+)/.test(ua)||/Konqueror\/([^;]+)/.test(ua)){//Linux下浏览器
           engine.ver = browser.ver = RegExp["$1"];
           engine.khtml = parseFloat(engine.ver);
      }else if(/rv:([^\)]+\) Gocko\/\d{8}/.test(ua)){
            engine.ver = RegExp["$1"];
            engine.gecko = parseFloat(engine.ver); 

            //确定不是firefox
            if(/Firefox\/(\S+)/.test(ua){
                browser.ver = RegExp["$1"];
                browser.firefox = parseFloat(browser.ver);
            }
      }else if (/MSIE ([^;]+)/.test(ua)){
           engine.ver = browser.ver = RegExp["$1"];
           engine.ie  = browser.ie = parseFloat(engine.ver);
      } 

     //检测浏览器
     browser.ie =engine.ie;
     browser.opera = engine.opera; 

     var p = navigator.platform;
     system.win = p.indexOf("Win")==0;
     system.mac = p.indexOf("Mac")==0;
     system.x11 = (p=="x11")||p.indexOf("Linux")==0; 

     if(system.win){
          if(/Win(?:dow)?([^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";
                         case "6.0" :
                              system.win = "Vista";
                             break;
                         case "6.1" :
                              system.win = "7";
                             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; 

     //win Mobile
      if(system.win == "CE"){
           system.winMobile = system.win;
      }else if(system.win = "Ph"){
           if(/Windows Phone OS (\d+\_\d+)/.test(ua)){
               system.win = "Phone";
               system.winMobile parseFloat(RegExp["$1"]);
          }
     } 

      //检测ios版本
      //
      if(system.mac && ua.indexOf("Mobile")>-1){
            if(/CPU (?:iPhone)?OS (\d+\_\d+)/.test(ua){
                 system.ios = parseFloat(RexExp.$1.replace("_","."));
            }else {
                 system.ios = 2 ;//不能真正检查出来,所以猜测出来一个结果
            }
      } 

      //检查安卓版本
      //
      if(/Android (\d+/_\d+)/.test(ua)){
           system.andriod = parseFloat(RegExp.$1);
      } 

      //游戏系统
      system.wii = us.indexOf("Wii")>-1;
      system.ps = /playstation/i.test(ua);
      //返回对象
      return {
           engine : engine,
           browser : browser,
           system : system
      }
 }

  当然,你也可以自己构造正则表达式,匹配us对象,判断其他的类型哦~

  呵呵,撸走代码不要忘了点赞哦~(*^_^*)

检测浏览器版本类型的JavaScript代码,终极版的更多相关文章

  1. javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)

    这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放).检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供java ...

  2. ASP.NET MVC中检测浏览器版本并提示下载更新

    如果网站使用html5.css3.自适应等新特性,可能有些浏览器版本不支持.这时候,需要提醒浏览者更新浏览器的版本到最新. 本篇用到的插件为:http://jreject.turnwheel.com/ ...

  3. js检测浏览器版本代码,兼容ie11

    原文:http://blog.csdn.net/tenkin/article/details/11640165 <script type="text/javascript"& ...

  4. jquery检测浏览器版本

    //检测当前浏览器 function browserType() { var brow = $.browser; //console.log(brow); var bInfo = "&quo ...

  5. JS检测浏览器版本信息(包含IE11),并动态添加样式

    <head runat="server"> <meta http-equiv="Content-Type" content="tex ...

  6. jquery检测浏览器类型

    使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true ...

  7. 使用JavaScript检测浏览器

    假设你真的需要检测浏览器的类型,使用JavaScript非常easy达到. View Demo Download Source from GitHub JavaScript有一个navigator的标 ...

  8. javascript——处理(获取)浏览器版本、操作系统

    javascript——处理(获取)浏览器版本.操作系统 /** * Created by Administrator on 15-1-12. */ function BroswerUtil() { ...

  9. 浏览器地址栏运行JavaScript代码

    这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开头后跟要执行的语句.比如: javascript:alert('hello from ad ...

随机推荐

  1. OSChina 的URL类的源代码重写过程

    此代码是 oschina 到手柄形状像 http://www.oschina.net/p/tomcat 这种URL 此类已经废弃,改用 http://www.oschina.net/code/snip ...

  2. Linux内核进程管理

    介绍: 在Linux的内核的五大组成模块中,进程管理模块时很重要的一部分.它尽管不像内存管理.虚拟文件系统等模块那样复杂.也不像进程间通信模块那样条理化,但作为五大内核模块之中的一个,进程管理对我们理 ...

  3. Unity3D流行的游戏开发人员构建高速检查站系统

    好友,大家好,欢迎关注我的博客.我是秦培,我的博客地址blog.csdn.net/qinyuanpei. 今天,我想分享的是,现在在移动平台上的检查点系统更受欢迎,机游戏如<愤慨的小鸟>. ...

  4. JavaScript之函数作用域

    有过类似C语言编程经验的同学应该都知道“块级作用域(block scope)”:花括号内的每一段代码都具有各自的作用域,而且在声明它们的代码段之外是不可见的.而在JavaScript中是没有块级作用域 ...

  5. 有效的XML: DTD(文档类型定义)介绍(转)

    文档类型定义和命名空间 有效(Valid)的XML文档: 首先,XML文档是个格式正规的(Well-formed)XML文档:(见格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节). ...

  6. 二叉搜索树(Binary Search Tree)--C语言描述(转)

    图解二叉搜索树概念 二叉树呢,其实就是链表的一个二维形式,而二叉搜索树,就是一种特殊的二叉树,这种二叉树有个特点:对任意节点而言,左孩子(当然了,存在的话)的值总是小于本身,而右孩子(存在的话)的值总 ...

  7. JavaScript中的分号插入机制

    原文:JavaScript中的分号插入机制 仅在}之前.一个或多个换行之后和程序输入的结尾被插入 也就是说你只能在一行.一个代码块和一段程序结束的地方省略分号. 也就是说你可以写如下代码 functi ...

  8. Eclipse:引用一个项目作为库(图文教程)

    前言:工程TestRoid要引用Volley项目作为一个库 过程,如下面: 一:选择导入Android工程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc ...

  9. [Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现

    大家好,我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 今天我们来一起学习在Unity3D中怎样实现角色攀爬效果. 在RPG游戏中,某些游戏场景经常须要玩家 ...

  10. Ajax.BeginForm的异步提交数据 简介

    Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...