首頁 web前端 js教程 JavaScript實作瀏覽器用戶代理偵測腳本的方法詳解

JavaScript實作瀏覽器用戶代理偵測腳本的方法詳解

Oct 27, 2017 am 09:33 AM
firefox javascript webkit

以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、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實作瀏覽器用戶代理偵測腳本的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

Ubuntu Linux如何移除Firefox Snap? Ubuntu Linux如何移除Firefox Snap? Feb 21, 2024 pm 07:00 PM

Ubuntu Linux如何移除Firefox Snap?

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

javascript如何使用insertBefore

See all articles