js檢測搜狗瀏覽器、百度瀏覽器、微信瀏覽器程式碼例項

antzone發表於2017-04-02

本章節分享一段程式碼例項,它實現了對各種瀏覽器型別的判斷功能。

比如搜狗瀏覽器、百度瀏覽器、微信瀏覽器等等,這段程式碼可能會隨著時間的推移並不準確,因為瀏覽器的一些標識可能會發生變化,不過在當前還是非常好用的,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
Angela.browser = { //#瀏覽器
  browsers: { //# 瀏覽器核心類別
    weixin: /micromessenger(\/[\d\.]+)*/  //微信內建瀏覽器
    , mqq: /mqqbrowser(\/[\d\.]+)*/    //手機QQ瀏覽器
    , uc: /ucbrowser(\/[\d\.]+)*/      //UC瀏覽器
    , chrome: /(?:chrome|crios)(\/[\d\.]+)*/ //chrome瀏覽器
    , firefox: /firefox(\/[\d\.]+)*/     //火狐瀏覽器
    , opera: /opera(\/|\s)([\d\.]+)*/   //歐朋瀏覽器
    , sougou: /sogoumobilebrowser(\/[\d\.]+)*/  //搜狗手機瀏覽器
    , baidu: /baidubrowser(\/[\d\.]+)*/     //百度手機瀏覽器
    , 360: /360browser([\d\.]*)/             //360瀏覽器
    , safari: /safari(\/[\d\.]+)*/    //蘋果瀏覽器
    , ie: /msie\s([\d\.]+)*/  // ie 瀏覽器
  }
  //@errCall : 錯誤回撥
  , addFav: function (url, title, errCall) { //#加入收藏夾
    try {
      window.external.addFavorite(url, title);
    } catch (e) {
      try {
        window.sidebar.addPanel(title, url, '');
      } catch (e) {
        errCall();
      }
    }
  },
  //瀏覽器版本
  coreInit: function () { //#noadd
    var i = null
      , browsers = this.browsers
      , ua = window.navigator.userAgent.toLowerCase()
      , brower = ''
      , pos = 1
    ;
    for (i in browsers) {
      if (brower = ua.match(browsers<i>)) {
        if (i == 'opera') {
          pos = 2;
        } else {
          pos = 1;
        }
        this.version = (brower[pos] || '').replace(/[\/\s]+/, '');
        this.core = i;
        return i;
      }
    }
  }
  // 檢測IE版本 !僅支援IE: 5,6,7,8,9 版本
  , ie: (function () { //# 檢測IE版本 !僅支: ie5,6,7,8,9
    var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');
    while (
      div.innerHTML = '<!--[if gt IE ' + (++v) + ']>[i]</i><![endif]-->',
        all[0]
      );
    return v > 4 ? v : false;
  })()
  , isWebkit: /webkit/i.test(navigator.userAgent)
};

相關文章