项目中碰到这样一个需求点,在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内核信息有点区别,上面有注明

最新文章

  1. 用hibernate tools生成对应的sql应用代码
  2. HDU 1796How many integers can you find(容斥原理)
  3. mysql内存使用以及优化中需要的几点注意
  4. 使用spring手动获取Bean的时候,不能强转回它自己。
  5. <Oracle Database>后台进程
  6. iOS出现<object returned empty description>的解决方法
  7. ExtjsMVC开发过程中遇到的具体问题总结
  8. suse linux环境变量设置
  9. VIM Taglist安装配置和使用
  10. OpenXmlSdk导出Excel
  11. SiteMesh
  12. 举例说,在命令模式(Command Pattern)
  13. switch条件语句规则
  14. linux下安装Mysql 以及导入数据库
  15. Java 第九周总结
  16. 201521123025《java程序设计》第13周学习总结
  17. qt 移植到开发板
  18. 学号:201621123032 《Java程序设计》第12周学习总结
  19. 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
  20. 是程序员,就用python导出pdf

热门文章

  1. Android进程的so注入--Poison(稳定注入版)
  2. ZOJ3261并查集逆向处理
  3. Day005 for循环
  4. HTML中的JavaScript
  5. 敏杰开题——软工团队项目选择与NABCD分析
  6. 6.注册CRT 以及SecureCRT访问
  7. powercli The SSL connection could not be established, see inner exception. 问题解决
  8. mysqldMY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 2020-12
  9. python上下文管理协议,即with的详细使用
  10. 寻找CPU使用率高的进程方法