js获取浏览器内核判断终端(是QQ打开还是QQ浏览器打开)

var browser ={
    versions: function() {
      var u = navigator.userAgent,
      var ua = navigator.userAgent.toLocaleLowerCase();
      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.*/),        /*是否为移动终端*/

        ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), /*ios终端*/

        android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, /*android终端或者uc浏览器*/

        iPhone: u.indexOf('iPhone') > -1,          /*是否为iPhone或者QQHD浏览器*/

        iPad: u.indexOf('iPad') > -1,      /*是否iPad*/

        webApp: u.indexOf('Safari') == -1,          /*是否web应该程序,没有头部与底部*/

        souyue: u.indexOf('souyue') > -1,

        superapp: u.indexOf('superapp') > -1,

        weixin:u.toLowerCase().indexOf('micromessenger') > -1,
 
        qq: ua.match(/QQ/i) == "qq", // QQ
 
        weiBo: ua.match(/WeiBo/i) == "weibo", // 微博
 
        Safari:u.indexOf('Safari') > -1,
 
        QQbrw: u.indexOf('MQQBrowser') > -1, // QQ浏览器
 
        webview: !(u.match(/Chrome/([d.]+)/) || u.match(/CriOS/([d.]+)/)) && u.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/),
 
        ucweb: function () {
          try {
            return parseFloat(u.match(/ucwebd+.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
      };

    }(),

    language: (navigator.browserLanguage || navigator.language).toLowerCase()

  };
 

 相判断是在qq内置浏览器还是qq浏览器

browser.versions.qq && !browser.versions.QQbrw
原文地址:https://www.cnblogs.com/ryze/p/ryze13.html