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(/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
      };
    }(),
    language: (navigator.browserLanguage || navigator.language).toLowerCase()
  };
 

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

browser.versions.qq && !browser.versions.QQbrw

js获取浏览器内核判断终端(是QQ打开还是QQ浏览器打开)的更多相关文章

  1. 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面

    纯js,直接分享,直接使用: var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVe ...

  2. H5根据浏览器内核判断并区分微信、QQ和QQ浏览器

    项目中碰到这样一个需求点,在h5页面区分当前所处客户端环境是QQ客户端.微信客户端还是QQ浏览器客户端,并做不同的逻辑处理 首先可以通过 window.navigator.userAgent 获取到当 ...

  3. js获取上传图片大小,判断上传图片类型,获取图片真实宽度和高度

    html部分 <div class="form-group col-md-12"> <label class="col-md-2 text-right& ...

  4. [完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器

    截至自2017-08-11,支持现世已出的几乎所有PC端浏览器版本判断. 受支持的PC端浏览器列表: Edge IE Chrome Firefox Opera Safari QQ浏览器 360系列浏览 ...

  5. 关于浏览器内核与javascript引擎的一些小知识

    浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...

  6. 各大浏览器内核特性及对应的Browserhacks举例

    1.浏览器内核指的是什么? 简化的浏览器=用户界面+渲染引擎+js解析引擎+数据存储+网络部件 而通常所说的浏览器内核指的是页面渲染引擎(rendering engine). 2.渲染引擎 The r ...

  7. js获取file控件的完整路径(上传图片预览)

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. webkit、cef、nwjs、electron、 miniblink浏览器内核优缺点

    市面上作为嵌入的组件的可用的浏览器内核,不外乎这几个:webkit.cef.nwjs.electron. 1.cef:优点是由于集成的chromium内核,所以对H5支持的很全,同时因为使用的人也多, ...

  9. js获取浏览器类型进行判断

    本文为webuploader.js中学习心得,感谢开源,从中加入了ie的edge判断 /** * @description 简单的浏览器检查结果. * * * `webkit` webkit版本号,如 ...

随机推荐

  1. JsonLayout log4j2 json格式输出日志

    如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. 前提需要Jackson的包,保证项目中包含jackson的 ...

  2. 隐藏WORDPRESS账户登录错误信息

    将下面的脚本添加到当前主题的functions.php文件中. function no_wordpress_errors(){  return 'Something is wrong!';}add_f ...

  3. pandas 将excel一列拆分成多列重新保存

    利用pd.read_excel   做到将第二列“EVT-LBL”按“-”分割后重新加三列在df后面 1 读取表格df 2. 分割第二列短横连接的数字,保存到df2---- 参考:str.spilt( ...

  4. ARP【地址解析协议】理解

    今天是来公司的第二个周一,早上收到Boss抄送的邮件说网段之间无法通信,心想现在还不太懂这个原理,于是就在网络上搜罗了一下资料,作此整理(大部分文字内容来自网络) 1. 同网段和不同网段设备通信原理详 ...

  5. UILabel Text显示不同的颜色

    UILabel的text实现不同的颜色. NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithStr ...

  6. 2018年3月底的PTA(二)

    C高级第二次PTA作业(1) 题目6-7 删除字符串中数字字符 1.设计思路 为了偷懒,本题算法和流程图是精简代码后的,具体请看本题实验代码的第二段代码. (1)算法(子函数) 第一步:定义子函数类型 ...

  7. Python全栈之路---数据类型—字符串

    字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) & ...

  8. Tomcat配置虚拟主机、tomcat的日志

    1.配置Tomcat的虚拟主机修改:vim /usr/local/tomcat9/conf/server.xml 添加一个虚拟主机:加入: <Host name="www.tomcat ...

  9. asp.net服务器控件button先执行js再执行后台的方法

    服务器控件增强了在后台处理的能力,但是在前台有时候也被受到了限制. 关于button这个服务器控件,我一直想减少它向服务器提交数据.那些检测,还是在客户端实现就好了.这就需要javascript,但是 ...

  10. GoStudy——Go语言入门第一个事例程序:HelloWorld.go

    package main import ( ​ "fmt" ) func main() { ​ fmt.Println("Hello,world!!!--2019年4月1 ...