前端客戶端檢測

優(yōu)先采取可靠的能力檢測怪癖檢測,而后采用用戶代理(瀏覽器)檢測
強(qiáng)烈依賴主流瀏覽器的navigator.userAgent:

Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36

Firefox: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0

Safari: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2

Edge: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299

IE10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)

Opera: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.31

IOS和Android:

Android: Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Mobile Safari/537.36

IOS: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1

創(chuàng)建一個函數(shù)返回存有客戶端信息的對象

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,
  }
  //在此做檢測
  return {
    engine: engine,
    browser: browser,
  }
}

1、識別呈現(xiàn)引擎

var ua = navigator.userAgent;
if (window.opera) {
  engine.ver = window.opera.version();
  engine.opera = parseFloat(engine.ver);
} else if (/AppleWebKit\/(\S+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.webkit = parseFloat(engine.ver);
} else if (/KHTML\/(\S+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.khtml = parseFloat(engine.ver);
} else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.gecko = parseFloat(engine.ver);
} else if (/MSIE ([^;]+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.ie = parseFloat(engine.ver);
}

2、識別瀏覽器

var ua = navigator.userAgent;
if (window.opera) {
  engine.ver = window.opera.version();
  engine.opera = parseFloat(engine.ver);
} else if (/AppleWebKit\/(\S+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.webkit = parseFloat(engine.ver);
  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 if (/KHTML\/(\S+)/.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);
  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);
}

此外還包括
識別平臺( navigator.platform,win,mac,unix )
識別windows操作系統(tǒng)( /Win(?:dows )?([^do]{2})\s?(\d+.\d+)?/ )
識別移動設(shè)備( 正則 )
識別游戲系統(tǒng)( 字符串 )

注意:用戶代理檢測是客戶端檢測的最后一個選擇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • ??瀏覽器提供商雖然在實(shí)現(xiàn)公共接口方面投入了很多精力,但結(jié)果仍然是每一種瀏覽器都有各自的長處,也都有各自的缺點(diǎn)。即...
    霜天曉閱讀 444評論 0 1
  • 本章內(nèi)容 使用能力檢測 用戶代理檢測的歷史 選擇檢測方式 9.1 能力檢測 能力檢測的基本模式如下: 舉例子,IE...
    悶油瓶小張閱讀 245評論 0 1
  • Chapter 9 客戶端檢測 能力檢測 用于識別瀏覽器的能力,基本模式如下if (object.property...
    云之外閱讀 241評論 0 0
  • 前言 前端這東西,各種先有事實(shí)后有標(biāo)準(zhǔn)??。不管是各大瀏覽器老哥各自為政,還是w3c姍姍來遲,既有事實(shí)標(biāo)準(zhǔn)難以更改。...
    MrXQ閱讀 1,812評論 0 0
  • 感恩張衡,今天去他們公司參觀,和他聊了產(chǎn)品和銷售,非常感謝他的分享,讓我對紅酒有了進(jìn)一步的了解,有了更深入的學(xué)習(xí)。...
    那朵花蕾閱讀 135評論 0 0