JS 判斷客戶端環境(以及如何區分QQ客戶端和QQ瀏覽器)

// 判斷瀏覽器內核、手機系統等,使用 browser.version.ios
var browser = {
  version: function () {
    var u = navigator.userAgent;
    var ua = navigator.userAgent.toLocaleLowerCase();
    var app = navigator.appVersion;
    return {
      trident: u.indexOf('Trident') > -1, // IE內核
      presto: u.indexOf('Presto') > -1, // opera內核
      webKit: u.indexOf('AppleWebKit') > -1, //蘋果、谷歌內核
      gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, // 火狐內核
      mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), // 是否爲移動終端
      ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // IOS終端
      android: u.indexOf('Android') > -1 || u.indexOf('Mac') > -1, // 安卓終端
      iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, // 是否爲iphone或QQHD瀏覽器
      iPad: u.indexOf('iPad') > -1, // 是否爲iPad
      webApp: u.indexOf('Safari') == -1, // 是否web應用程序,沒有頭部與底部
      QQbrw: u.indexOf('MQQBrowser') > -1, // QQ瀏覽器
      weiXin: u.indexOf('MicroMessenger') > -1, // 微信
      QQ: ua.match(/QQ/i) == "qq", // QQ
      weiBo: ua.match(/WeiBo/i) == "weibo", // 微博
      ucLowEnd: u.indexOf('UCWEB7.') > -1, //
      ucSpecial: u.indexOf('rv:1.2.3.4') > -1,
      webview: !(u.match(/Chrome\/([\d.]+)/) || u.match(/CriOS\/([\d.]+)/)) && u.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/),
      ucweb: function () {
        try {
          return parseFloat(u.match(/ucweb\d+\.\d+/gi).toString().match(/\d+\.\d+/).toString()) >= 8.2
        } catch (e) {
          if (u.indexOf('UC') > -1) {
            return true;
          }
          return false;
        }
      }(),
      Symbian: u.indexOf('Symbian') > -1,
      ucSB: u.indexOf('Firofox/1.') > -1
    };
  }()
};
  1. 一般的客戶端環境直接調用browser.version.xx進行判斷即可
  2. 但是使用browser.version.QQ時,在QQ客戶端和QQ瀏覽器中均返回true,所以無法判斷。
  3. 但是的但是,還有一個browser.version.QQbrw可以用來判斷是否爲QQ瀏覽器
  4. 所以的所以,通過(browser.version.QQ && !browser.version.QQbrw)組合,不就可以判斷是否爲QQ客戶端了麼?(機智臉^-^)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章