文档章节

通过UA判断手机的类型

 东东笔记
发布于 03/12 09:31
字数 931
阅读 18
收藏 0

先上代码:

var UA = window.navigator.userAgent.toLocaleLowerCase()

if(/iphone|ipad|ipod/.test(UA)){//ios


}else if(/gt-|sm-|sch-/.test(UA)){ //三星


}else if(/huawei|honor/.test(UA)){ //华为


}else{//其他手机


}
 

 

 

=======================

从UA看厂商
    最近手上的H5平台要兼容各种屏幕大小,又由于平台生产出的图片尺寸的限制,为了使图片不变形,不裁切,只能采用宽方向压缩的方案进行处理,具体适配方案讨论可以参看另一篇BLOG。如果有好的屏幕适配方案,可以联系我一起讨论哈。

    现在我们进入正题,看看各大厂商的UA: 首先来看

    三星:三星不愧是大厂,各系列产品清晰的呈现在UA里面,而且UA的规则也是非常统一的,根据不同产品线,分为GT-,SM-,SCH-开头的UA,可以通过/GT-|SM-|SCH-/ig直接选择出三星系列的手机。

    小米:小米的UA简直是一团乱,各种奇葩特征,简直不忍直视,看起来使用机型来命名的,但也不全是,比如红米有几种:redmi, HM,2014501之类的各种命名规则,对小米的UA检测,估计只能使用枚举的正则了:/HM|RedMi|Mi/ig,不过这种方式难保完整和齐全。

    华为:作为国内一线大厂,华为的UA可圈可点,和三星有些类似,华为的UA是按照产品线来进行标注识别的,主要分为huawei(华为)和honor(荣耀)两个系列,所以华为的UA识别也和简单:/huawei|honor/ig一个正则足够了。

    OPPO:出乎意料的oppo手机相当的多,看来oppo的营销做得相当不错啊,不过他们家的UA已经超越小米到了令人发指的程度,同一款手机有各种不同的表达,简直崩溃,更可怕的是,根本没法通过简单正则判断是不是oppo手机。

    vivo:这个厂的手机UA做的相当规范,不管什么型号,至少都是以vivo开头,这样就可以通过简单正则判断他了,比如/vivo/ig

另外一些杂牌手机,确实很多,android的痛点也就在这里了,各种碎片化,完全没有章法。

【附录】从访问日志里提取的货真价实ua

三星:

GT-I9152P Build/JLS36C 
SM-E7000 Build/KTU84P 
SM-G9200 Build/LMY47X 
GT-I9128I Build/JDQ39 
GT-I9500 Build/JDQ39 
SM-N9008V Build/LRX21V 
SM-N7506V Build/JLS36C 
SM-G3609 Build/KTU84P 
SCH-W2013 Build/IMM76D

小米:

HM NOTE 1LTE Build/KTU84P 
Redmi Note 2 Build/LRX22G 
m1 Build/KTU84P 
2014501 Build/KOT49H 
2014011 Build/HM2014011 
2013022 Build/HM2013022 
MI-ONE Plus Build/GINGERBREAD

华为:

HUAWEI G6-C00 Build/HuaweiG6-C00 
HUAWEI C8816D Build/HuaweiC8816D 
PE-TL00M Build/HuaweiPE-TL00M 
PLK-AL10 Build/HONORPLK-AL10(荣耀系列) 
Che2-TL00 Build/HonorChe2-TL00 
H30-U10 Build/HuaweiH30-U10 
SCL-AL00 Build/HonorSCL-AL00 
PE-TL20 Build/HuaweiPE-TL20 
H30-U10 Build/HuaweiH30-U10 
H60-L01 Build/HDH60-L01

OPPO:

OPPO R7 Build/KTU84P 
OPPO R7t Build/KTU84P 
R7007 Build/JLS36C 
R2017 Build/JLS36C 
R6007 Build/JLS36C 
1105 Build/KTU84P 
N5117 Build/JLS36C 
M571C Build/LMY47D 
R7Plus Build/LRX21M 
X909T Build/JDQ39 
A31t Build/KTU84P 
A31 Build/KTU84P 
R8207 Build/KTU84P 
R833T Build/JDQ39

vivo:

vivo Y13iL Build/KTU84P 
vivo X5Pro D Build/LRX21M 
vivo Y22L Build/JLS36C 
vivo Y13T Build/JDQ39 
vivo X5Max Build/KTU84P

一加:

ONE A2001 Build/LMY48W

酷派:

Coolpad 8297 Build/JDQ39 
SK1-02 Build/KTU84P

华硕:

ASUS_Z00ADB Build/LRX21V

魅族:

M578C Build/LMY47D 
MX5 Build/LRX22C 
M571C Build/LMY47D

HTC: 
HTC T528d Build/IMM76D 
HTC One X Build/IML74K 
HTC M8t Build/LRX22G

联想:

Lenovo A360t Build/KOT49H

美图:

MeituM2 Build/JDQ39 
MeituM4 Build/JDQ39

SOYN: 
L50t Build/17.1.E.2.67

uimi: 
UIMI F7 Build/KOT49H

乐视: X600 Build/ABXCNOP5000609151S

努比亚: NX505J Build/KVT49L 
NX511J Build/LRX22G

金立: F103 Build/LRX21M 
V188 Build/KOT49H 
NX601J Build/KVT49L

中兴:

ZTE G718C Build/KVT49L

杂牌: Q001 Build/KOT49H(欧沃) 
Aquaris M5 Build/LRX22G 
ZZBAO_Z5E Build/KTU84M(掌中宝) 

Nexus 4 Build/LRX22C(google)

搬运完成~~~~
 

本文转载自:https://blog.csdn.net/qq_40028324/article/details/80890289

粉丝 1
博文 70
码字总数 21035
作品 0
厦门
程序员
私信 提问
网站日志中的UserAgent分析

浏览器访问网站时,会提交UserAgent信息,里面包含操作系统/浏览器类型/渲染引擎,可以据此大致评估网站的客户端分布。特别是移动设备会在UserAgent中包含设备型号信息,所以有可能根据UserA...

师弟文
2015/12/31
2.6K
3
[转]手机网站开发的一些总结

手机版网站起码要实现一些基本的功能吧: 1.页面的适用性问题。对于移动终端,有不一样的分辨率与屏幕尺寸,如果还像电脑端的设计还限制网页的宽度为1003px或其他像素值,字体大小还用12px或...

长平狐
2012/06/08
193
0
nginx多条件if判断后rewrite,减轻后端php工作压力(随笔)

先说下我对nginx配置文件的认识: nginx的配置文件可以看成是一个程序,一个按照程序员思维习惯进行语法设置的nginx配置程序,编写简单便于理解,而且配合着各种变量和if判断等指令可以灵活的...

愚人乙
2016/06/28
0
0
navigator.userAgent.indexOf来判断浏览器类型

<script language="JavaScript"> <!-- function getOs() { var OsObject = ""; if(navigator.userAgent.indexOf("MSIE")>0) { return "MSIE"; } if(isFirefox=navigator.userAgent.indexOf("......

铭尘沐风
2015/09/16
1K
0
如何判断是手机还是电脑在访问网站

如何判断是手机还是电脑在访问网站? 网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列出了大多数的手机发送的User-Agent, 但依然会有很多手机...

Sobey
2013/10/11
3.9K
3

没有更多内容

加载失败,请刷新页面

加载更多

CRM、DMP、CDP都是什么?有什么区别?

Markter对CRM系统(Customer Relationship Management System,客户关系管理系统),营销自动化等概念都已经比较熟悉,也许DMP(Data Management Platform,数据管理平台)也多多少少有些了解。...

怡海软件-CRM
22分钟前
4
0
中台是什么,到底要解决什么问题?

故事的开始 这个最早由阿里在2015年提出的“大中台,小前台”战略中延伸出来的概念,最近在国内大热。阿里、腾讯、百度、京东、美团、滴滴等一众互联网巨头,从去年到今年,接连开始组织架构...

喵二狸
33分钟前
3
0
Linux Centos 7 - MySQL 5.7离线安装

内部网络通过离线包的方式进行安装。 一、下载 下载地址:https://dev.mysql.com/downloads/mysql/ 进入页面后,点击右侧链接。 下载对应版本。 通过xftp6等工具上传到服务器上。 二、安装和...

华山猛男
33分钟前
3
0
EventBus 3 全解

EventBus 3 全解 [TOC] 使用 一个基于观察者模式的事件发布/订阅框架. 用于模块间通信和解耦, 使用方便,性能高. 基本使用 1. gradle导入依赖库 implementation 'org.greenrobot:eventbus:3....

马湖村第九后羿
36分钟前
4
0
HTTP 协议

什么是HTTP协议? HTTP是hypertext transport protocol的缩写,即超文本传输协议。 是用于万维网服务器与本地浏览器之间传输超文本的传送协议。可以使浏览器更加高效,使网络传输减少。能够保...

彩色泡泡糖
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部