用ua 检测各种奇奇怪该的浏览器

项目要求只能在ios端的safari中打开页面,其他的不行。
本来只是识别了ua中的ipad、iphone+safari数字结尾,后来发现不行,没法和chrome区别开。
ios端的safari似乎没有可以与其他所有浏览器一键区别开的关键字或者特征,只能通过排除法尽量先排除其他浏览器。
查了一圈,找到了前辈总结的检测方法,测试可行,记录如下:

var browserName = "Other";
    var ua = window.navigator.userAgent;
    browserRegExp = {
      Sogou : /SE\s2\.X|SogouMobileBrowser/,
      Explorer2345 : /2345Explorer|2345chrome|Mb2345Browser/,
      Liebao : /LBBROWSER/,
      QQBrowser : /QQBrowser/,
      Baidu : /BIDUBrowser|baidubrowser|BaiduHD/,
      UC : /UBrowser|UCBrowser|UCWEB/,
      MiuiBrowser : /MiuiBrowser/,
      Wechat : /MicroMessenger/,
      MobileQQ : /Mobile\/\w{5,}\sQQ\/(\d+[\.\d]+)/,
      Shoujibaidu : /baiduboxapp/,
      Firefox : /Firefox/,
      Maxthon : /Maxthon/,
      Se360 : /360SE/,
      Ee360 : /360EE/,
      TheWorld : /TheWorld/,
      Weibo : /__weibo__/,
      NokiaBrowser : /NokiaBrowser/,
      Opera : /Opera|OPR\/(\d+[\.\d]+)/,
      Edge : /Edge/,
      AndroidBrowser : /Android.*Mobile\sSafari|Android\/(\d[\.\d]+)\sRelease\/(\d[\.\d]+)\sBrowser\/AppleWebKit(\d[\.\d]+)/i,
      IE : /Trident|MSIE/,
      Chrome : /Chrome|CriOS/,
      Safari : /Version[|\/]([\w.]+)(\s\w.+)?\s?Safari|like\sGecko\)\sMobile\/\w{3,}$/,
    };
    for (var i in browserRegExp) {
      if (browserRegExp[i].exec(ua)) {
        browserName = i;
        break;
      }
    }
    if (typeof window.ga !== 'undefined') {
      window.ga('set', 'dimension3', browserName);
    }
posted @ 2019-08-09 11:36  闲敲棋子  阅读(869)  评论(0)    收藏  举报