• 技术文章 >web前端 >js教程

    javascript浏览器用户代理检测脚本方法详解

    小云云小云云2018-01-20 13:51:11原创804
    本文主要为大家带来一篇javascript浏览器用户代理检测脚本实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

    以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Windows操作系统、移动设备和游戏系统。


    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, 
      mac: false, 
      x11: false, 
     
      // 移动设备 
      iphone: false, 
      ipod: false, 
      ipad: false, 
      ios: false, 
      android: false, 
      nokiaN: false, 
      winMobile: false, 
     
      // 游戏系统 
      wii: false, 
      ps: false
     }; 
     
     // 检测呈现引擎和浏览器 
      var ua = navigator.userAgent;  
     if (window.opera){ 
      engine.ver = browser.ver = window.opera.version(); 
      engine.opera = browser.opera = parseFloat(engine.ver); 
     } 
     else if (/AppleWebKit\/(\S+)/.test(ua)){ 
      engine.ver = RegExp["$1"]; 
      engine.webkit = parseFloat(engine.ver); 
     
      // 确定是Chroeme还是Safari 
       if (/Chrome\/(\S+)/.test(ua)){ 
       browser.ver = RegExp["$1"]; 
       browser.chrome = parseFloat(browser.ver); 
      } else if (/Version\/(\S+)/.test(ua)){ 
       browser.ver = RegExp["$1"]; 
       browser.safari = parseFloat(browser.ver); 
      } 
      else { 
       // 近似地确定版本号 
        var safariVersion = 1; 
       if (engine.webkit < 100){ 
        safariVersion = 1; 
       } else if (engine.webkit < 312){ 
        safariVersion = 1.2; 
       } else if (engine.webkit < 412){ 
        safariVersion = 1.3; 
       } else { 
        safariVersion = 2; 
       } 
        
       browser.safari = browser.ver = safariVersion;   
      } 
     } 
     else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){ 
      engine.ver = browser.ver = RegExp["$1"]; 
      engine.khtml = browser.konq = parseFloat(engine.ver); 
     } 
     else if (/rv:([^\)]+)\) Gecko\/\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); 
     
     // 检测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; 
         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+)/.test(ua)){ 
       system.win = "Phone"; 
       system.winMobile = parseFloat(RegExp["$1"]); 
      } 
     } 
     
     // 检测IOS版本 
     if(system.mac && ua.indexOf("Mobile")> -1){ 
      if(/CPU (?:Phone )?OS (\d+_\d+)/.test(ua)){ 
       system.ios = parseFloat(RegExp.$1.replace("_",".")); 
      } 
      else{ 
       system.ios = 2; 
       // 不能真正检测出来,所以只能猜测 
      } 
     } 
     
     // 检测Android版本 
     if(/Android (\d+\.\d+)/.test(ua)){ 
      system.android = parseFloat(RegExp.$1); 
     } 
     
     // 游戏系统 
     system.wii = ua.indexOf("Wii") > -1; 
     system.ps = /playstation/i.test(ua); 
     
     // 返回这些对象 
     return { 
      engine:  engine, 
      browser: browser, 
      system:  system   
     }; 
     
     // console.log(engine); 
     // console.log(browser); 
     // console.log(system); 
    }();

    相关推荐:

    JavaScript浏览器选项卡效果_javascript技巧

    javascript浏览器兼容教程之事件处理_基础知识

    javascript浏览器窗口之间传递数据的方法_javascript技巧

    以上就是javascript浏览器用户代理检测脚本方法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript Firefox webkit
    上一篇:v-for实现生成table并给table加上序号方法 下一篇:javascript中的typeof和类型判断详解
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 实例讲解node中http模块和url模块的使用方法• Module模块化编程的优点(总结分享)• 示例解析Json对象Json字符串的序列化与反序列化• Node文件系统:fs异步与同步(文件读写)• 一文详解node path模块的用法
    1/1

    PHP中文网