JavaScript如何通过userAgent判断几个常用浏览器详解

前言

通常在做h5页面的时候需要在微信、QQ、微博等生态内做一些引流的工作,但引流时受限于这些平台。比如上次的文章《h5唤醒app实现以及注意点》就是妥协的一个办法,那么常用的这几个浏览器的User Agent什么样呢?如何判断呢?今天就具体来看看这个问题。

User Agent定义

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。---来自百度百科

从这句话可以知道我们通过UA能获取到用户使用的操作系统以及版本、cpu类型、浏览器以及版本等信息,是不是呢?

常见的几个浏览器UA

这里仅仅获取了微信、微博、QQ几个浏览器,其余的目前未获取,如果大家有补充的请私信或则定下评论哦。

安卓

安卓端的目前采用的是华为Honor V9 Play,当前Android系统版本为7.0,EMUI版本为5.1。

QQ浏览器

  • UA:mozilla/5.0 (linux; u; android 7.0; zh-cn; jmm-al10 build/honorjmm-al10) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/66.0.3359.126 mqqbrowser/9.6 mobile safari/537.36
  • Version:9.6.0.5170

QQ

  • UA:mozilla/5.0 (linux; android 7.0; jmm-al10 build/honorjmm-al10; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/62.0.3202.84 mobile safari/537.36 v1_and_sq_8.1.0_1232_yyb_d qq/8.1.0.4150 nettype/wifi webp/0.4.1 pixel/720 statusbarheight/49 simpleuiswitch/0
  • Version:8.1.0.4150

微信

  • UA:mozilla/5.0 (linux; android 7.0; jmm-al10 build/honorjmm-al10; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/66.0.3359.126 mqqbrowser/6.2 tbs/044807 mobile safari/537.36 mmwebid/4093 micromessenger/7.0.6.1460(0x27000634) process/tools nettype/wifi language/zh_cn
  • Version:7.0.6

微博

  • UA:mozilla/5.0 (linux; android 7.0; jmm-al10 build/honorjmm-al10; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/62.0.3202.84 mobile safari/537.36 weibo (huawei-jmm-al10__weibo__9.8.0__android__android7.0)
  • Version:9.8.0

苹果

苹果端的目前采用的是iPhone 6s Plus,当前iOS版本为12.4。

QQ浏览器

  • UA:mozilla/5.0 (iphone; cpu iphone os 12_4 like mac os x) applewebkit/605.1.15 (khtml, like gecko) version/12.0 mqqbrowser/9.6.0 mobile/15e148 safari/604.1 qbwebviewua/2 qbwebviewtype/1 wktype/1
  • Version:9.6.0.4193

QQ

  • UA:mozilla/5.0 (iphone; cpu iphone os 12_4 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 qq/8.1.0.437 v1_iph_sq_8.1.0_1_app_a pixel/1080 core/wkwebview device/apple(iphone 6splus) nettype/wifi qbwebviewtype/1 wktype/1
  • Version:8.1.0.437

微信

  • UA:mozilla/5.0 (iphone; cpu iphone os 12_4 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 micromessenger/7.0.5(0x17000523) nettype/wifi language/zh_cn
  • Version:7.0.5

微博

  • UA:mozilla/5.0 (iphone; cpu iphone os 12_4 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 weibo (iphone8,2__weibo__9.7.1__iphone__os12.4)
  • Version:9.7.1

以上UA的所有值都通过toLowerCase处理,所以都是小写的。

分别判断几个常用浏览器

在判断之前需要对UA做一个操作就是将所有的字母都变成小写的,通过toLowerCase实现,然后分别来判断。

通过上面的几个UA其实已经很好判断了,在上次的文章里面已经有个这个写法了,如下:

/micromessenger/i.test(u)  // 判断微信
u.indexOf("weibo") > -1   // 判断微博
u.indexOf(" qq") > -1   // 判断QQ
u.indexOf("mqqbrowser") > -1   // 判断QQ浏览器

注意QQ的判断是需要在qq前面加空格的

获取其它信息

通过上面的UA其实不难看出还可以通过UA判断出当前是系统是Android还是iOS,可以通过以下代码来区分:

/android/i.test(UA)  // 判断Android
/(iPhone|iPad|iPod|iOS)/i.test(UA)  // 判断iOS

通过上面的数据还可以看出手机的具体类型,这里就不过多介绍了。另外很多移动端浏览器是可以改变UA的,比如夸克和UC。如果大家深入研究还能获取到更多的信息的。

总结

到此这篇关于JavaScript如何通过userAgent判断几个常用浏览器的文章就介绍到这了,更多相关JS userAgent判断浏览器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • javascript通过navigator.userAgent识别各种浏览器

    原理:根据navigator.userAgent返回值识别 实现: 复制代码 代码如下: function validBrowser(){ var u_agent = navigator.userAgent; var browser_name='Failed to identify the browser'; if(u_agent.indexOf('Firefox')>-1){ browser_name='Firefox'; }else if(u_agent.indexOf('Chrome')>

  • JS通过分析userAgent属性来判断浏览器的类型及版本

    JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另 一种是通过分析浏览器的userAgent属性来判断的.本文对浏览器各自的userAgent特点做一分析,并给出判断方法: Windows操作系统浏览器系列: IE浏览器系列: 特征表现:均以 "mozilla/" 开头,"msie x.0;" 中的x表示其版本: 判断方

  • js识别不同浏览器基于userAgent做判断

    检测浏览器,注意浏览器判断顺序,主要是基于userAgent做判断. //检测浏览器 var client = function(){ var engine = { ie:0, gecko:0, webkit:0, khtml:0, opera:0, ver:null }; var browser = { //浏览器 ie: 0, firefox: 0, safari: 0, konq: 0, opera: 0, chrome: 0, ver:null }; var ua = navigator

  • JavaScript如何通过userAgent判断几个常用浏览器详解

    前言 通常在做h5页面的时候需要在微信.QQ.微博等生态内做一些引流的工作,但引流时受限于这些平台.比如上次的文章<h5唤醒app实现以及注意点>就是妥协的一个办法,那么常用的这几个浏览器的User Agent什么样呢?如何判断呢?今天就具体来看看这个问题. User Agent定义 User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等.---来自百度百科 从这句

  • 利用javaScript处理常用事件详解

    JS事件指再浏览器窗体或者HTML元素上发生的,乐意触发JS代码块运行的行为,下面,我们一起来看看相关事件. 1.窗体事件 例如 onload事件:当页面完全加载完成之后(包括图像,js文件,css文件等)该事件就会被触发. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>花狗在线</title> <script> window.o

  • Nodejs中 npm常用命令详解

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包. 1.npm install moduleNames:安装Node模块 安装完毕后会产生一个node_modules目录,其目录下就是安装的

  • Java中对List集合的常用操作详解

    目录: 1.list中添加,获取,删除元素: 2.list中是否包含某个元素: 3.list中根据索引将元素数值改变(替换): 4.list中查看(判断)元素的索引: 5.根据元素索引位置进行的判断: 6.利用list中索引位置重新生成一个新的list(截取集合): 7.对比两个list中的所有元素: 8.判断list是否为空: 9.返回Iterator集合对象: 10.将集合转换为字符串: 11.将集合转换为数组: 12.集合类型转换: 备注:内容中代码具有关联性. 1.list中添加,获取,

  • 基于字符串常用API(详解)

    API(Application Programming Interface):应用程序编程接口 使用Scanner 获取键盘录入的字符串 next() ; 在遇到空格的时候 会判定为当前的输入结束 空格之后的内容会收不到 nextLine(); 可以避免被空格中断 , 但是在于接收数字一起使用的时候会被干扰 创建字符串对象 public String(String original) ---> 通过字符串创建一个字符串对象 public String(char[] value) -=--> 通

  • python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 = "hello bei jing " name2 = '''hello shang hai haha''' python中的字符串一旦声明,是不能进行更改的,如下: #字符串为不可变变量,即不能通过对某一位置重新赋值改变内容 name = 'hello' name[0] = 'k' #通

  • JavaScript动画实例之粒子文本的实现方法详解

    1.粒子文本的实现原理 粒子文本的实现原理是:使用两张 canvas,一张是用户看不到的canvas1,用来绘制文本:另一张是用户看到的canvas2,用来根据canvas1中绘制的文本数据来生成粒子. 先在canvas1中用如下的语句绘制待显示的文本. ctx1.font = '100px PingFang SC'; ctx1.textAlign = 'center'; ctx1.baseline = 'middle'; ctx1.fillText('Happy New Year',canva

  • redis配置文件中常用配置详解

    此次安装的版本为: 5.0.3 [root@localhost local]# redis-server --version Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=afabdecde61000c3 打开redis.cof NETWORK # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求 bind 127.0.0.1 #是否开启保护模式,默认开启.要是配置

  • JavaScript实现网页带动画返回顶部的方法详解

    服务器由阿里云换到了腾讯云,我的代码之前一直都是托管在git上的,但是搬家的时候,可能是着急了,之前有些新加的文件没有托管到git上,所以,就丢了. 不过无所谓了,可以重新写嘛. 之前博客的回到顶部功能是请之前的一位前端的同事帮忙写的,这次打算自己尝试一下. 返回顶部无非就是锚点. 第一个版本: <body style="height:2000px;"> <div id="topAnchor"></div> <a href=

  • JavaScript变量声明的var、let、const详解

    目录 前言 内容 JavaScript的变量声明 var的变量声明 变量声明在函数作用域中 变量重复声明 变量声明提升 怪异危险的var let和const的变量声明 块级作用域 不可重复声明 暂时性死区 使用好let和const 总结 参考资料 前言 一个程序语言在运行的过程中,变量的声明在整个程序的生命周期中,是不断在进行的过程.任何程序的计算都会涉及至少一个变量,而计算的结果的则可能会涉及到另外的一个或者多个变量.变量在使用前是要声明,变量声明的过程在计算机的底层,牵涉到的是内存空间和内存

随机推荐