Home  >  Article  >  Web Front-end  >  JavaScript browser user agent detection script implementation method

JavaScript browser user agent detection script implementation method

小云云
小云云Original
2018-01-02 10:08:141290browse

本文主要为大家带来一篇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); 
}();

相关推荐:

MySQL 复制检测脚本

用户代理字符串userAgent可实现的四个识别_javascript技巧

ci用户代理

The above is the detailed content of JavaScript browser user agent detection script implementation method. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn