H5根据浏览器内核判断并区分微信、QQ和QQ浏览器
项目中碰到这样一个需求点,在h5页面区分当前所处客户端环境是QQ客户端、微信客户端还是QQ浏览器客户端,并做不同的逻辑处理
首先可以通过 window.navigator.userAgent 获取到当前页面浏览器内核信息
经过一系列踩坑之后总结发现三者的内核信息区别
// 微信 : MicroMessenger MQQBrowser NetType
// QQ : MQQBrowser(注:ios中无此信息,替换为QBWebView) NetType
// QQ浏览器: MQQBrowser
由此可见只有微信的webview中有可明显区分的信息(MicroMessenger)
function env() {
let userAgent = window.navigator.userAgent;
let inWeChat = userAgent.indexOf('MicroMessenger');
let androidBrowser= userAgent.indexOf('MQQBrowser');
let iosBrowser= userAgent.indexOf('QBWebView');
let netType= userAgent.indexOf('netType');
if (inWeChat > -1) {
// 微信有单独标识先判断微信
return 'weChat'
}
if (netType > -1 && (androidBrowser > -1 || iosBrowser > -1)) {
// QQ中有nettype信息
return 'QQ'
}
if (androidBrowser > -1 || iosBrowser > -1) {
// 最后再判断QQ浏览器
return 'QQBrowser'
}
return '';
}
上面方法即可区分出当前webview在QQ、微信还是QQ浏览器
要注意的一点就是安卓和ios中的QQ客户端的webview内核信息有点区别,上面有注明
H5根据浏览器内核判断并区分微信、QQ和QQ浏览器的更多相关文章
- 静态集成腾讯TBS X5内核WebView,从微信提取新版30M浏览器内核打包进apk
目录 前情提要 第一步:下载老版本SDK得到jar 获取SDK 集成SDK 步骤二.下载提取最新TBS X5内核 方法1:从微信中提取 方法2:App内内访问tbs调试页安装新内核 步骤三.集成内核到 ...
- js获取浏览器内核判断终端(是QQ打开还是QQ浏览器打开)
var browser ={ versions: function() { var u = navigator.userAgent, var ua = navigator.userAgent.toLo ...
- 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
纯js,直接分享,直接使用: var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVe ...
- [完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器
截至自2017-08-11,支持现世已出的几乎所有PC端浏览器版本判断. 受支持的PC端浏览器列表: Edge IE Chrome Firefox Opera Safari QQ浏览器 360系列浏览 ...
- 关于浏览器内核与javascript引擎的一些小知识
浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...
- 各大浏览器内核特性及对应的Browserhacks举例
1.浏览器内核指的是什么? 简化的浏览器=用户界面+渲染引擎+js解析引擎+数据存储+网络部件 而通常所说的浏览器内核指的是页面渲染引擎(rendering engine). 2.渲染引擎 The r ...
- webkit、cef、nwjs、electron、 miniblink浏览器内核优缺点
市面上作为嵌入的组件的可用的浏览器内核,不外乎这几个:webkit.cef.nwjs.electron. 1.cef:优点是由于集成的chromium内核,所以对H5支持的很全,同时因为使用的人也多, ...
- H5外部浏览器直接调起微信——通过url协议 weixin:// 判断是否安装微信及启动微信
前言: h5分享到微信,h5使用微信支付这些功能,都需要先判断是否安装微信客户端,如果已安装就启动微信,如果没有安装微信,就提示用户前去安装. 我们可以通过访问微信提供的URL协议(weixin:// ...
- 逍遥云天 H5外部浏览器直接调起微信——通过url协议 weixin:// 判断是否安装微信及启动微信
h5分享到微信,h5使用微信支付这些功能,都需要先判断是否安装微信客户端,如果已安装就启动微信,如果没有安装微信,就提示用户前去安装. 我们可以通过访问微信提供的URL协议(weixin://)来实现 ...
随机推荐
- Docker安装和helloworld
0.基本简介(想直接实操,直接跳过去看1就好) Docker 在容器的基础上,进行了进一步的封装,从文件系统.网络互联到进程隔离等等,极大的简化了容器的创建和维护.使得 Docker 技术比虚拟机技术 ...
- Intel汇编语言程序设计学习-第六章 条件处理-中
6.3 条件跳转 6.3.1 条件结构 在IA-32指令集中没有高级的逻辑结构,但无论多么复杂的结构,都可以使用比较和跳转指令组合来实现.执行条件语句包括两个步骤:首先,使用CMP,AND,SUB ...
- 记一次CTF的签到题
开篇 打开题目网站 首先看到的是一个人博客,功能点非常少,功能较多的页面就是留言板了 一开始没啥思路,就想着抓包能不能找到SQL注入无果,在这个地方卡了很久 柳暗花明 在乱点的时候,无意中发现题目中的 ...
- 【vue-06】webpack npm
什么是Webpack Webpack是一款模块加载器兼打包工具,他能把各种资源,比如js,css,less转化成一个静态文件,减少页面的请求,提高效率. 安装Webpack 在安装webpack之前, ...
- C++逆向分析----虚函数与多层继承
虚函数 C++通过关键字virtual来将函数声明为一个虚函数.当一个类包含虚函数后编译器就会给类的实例对象增加一个虚表指针,所谓的虚表指针就是指向虚表的指针.虚表就是一张地址表,它包含了这个类中所有 ...
- Java初始化数据域的途径
Java调用构造器的具体处理步骤: 1.所有数据域被初始化为默认值(0,false或null); 2.按照在类声明中出现的次序,依次执行所有域的初始化语句和初始化块: 3.如果构造器第一行调用了第二个 ...
- [bug] java.text.ParseException: Unparseable date: "2020-01-01"
原因 输入的字符串应和目标字符串格式长度都一样 如返回的字符串是:2019-11-11,但解析的格式是:yyyy-MM-dd HH:mm:ss,导致错误 参考 https://blog.csdn.n ...
- [刷题] 235 Lowest Common Ancestor of a Binary Search Tree
要求 给定一棵二分搜索树和两个节点,寻找这两个节点的最近公共祖先 示例 2和8的最近公共祖先是6 2和4的最近公共祖先是2 思路 p q<node node<p q p<=node& ...
- 消息队列之 RabbitMQ【验证通过】
消息队列之 RabbitMQ 预流 关注 22.9 2017.05.06 16:03* 字数 4884 阅读 284691评论 41喜欢 618赞赏 2 关于消息队列,从前年开始断断续续看了些资料, ...
- CentOS8.2集成的megaraid_sas版本不支持IBM X3850 X5内置RAID卡。需要更新https://docs.broadcom.com/docs/MR_LINUX_DRIVER_7.15-07.715.02.00-1-PUL.tgz
CentOS8.2集成的megaraid_sas版本不支持IBM X3850 X5内置RAID卡.需要更新https://docs.broadcom.com/docs/MR_LINUX_DRIVER_ ...