先上代碼:
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平臺要兼容各種屏幕大小硼莽,又由于平臺生產(chǎn)出的圖片尺寸的限制庶溶,為了使圖片不變形,不裁切懂鸵,只能采用寬方向壓縮的方案進行處理偏螺,具體適配方案討論可以參看另一篇BLOG。如果有好的屏幕適配方案矾瑰,可以聯(lián)系我一起討論哈∽┤祝現(xiàn)在我們進入正題隘擎,看看各大廠商的UA: 首先來看
三星:
三星不愧是大廠殴穴,各系列產(chǎn)品清晰的呈現(xiàn)在UA里面,而且UA的規(guī)則也是非常統(tǒng)一的,根據(jù)不同產(chǎn)品線采幌,分為GT-劲够,SM-,SCH-開頭的UA休傍,可以通過/GT-|SM-|SCH-/ig直接選擇出三星系列的手機征绎。小米:
小米的UA簡直是一團亂,各種奇葩特征磨取,簡直不忍直視人柿,看起來使用機型來命名的,但也不全是忙厌,比如紅米有幾種:redmi凫岖, HM,2014501之類的各種命名規(guī)則逢净,對小米的UA檢測哥放,估計只能使用枚舉的正則了:/HM|RedMi|Mi/ig,不過這種方式難保完整和齊全。華為:
作為國內(nèi)一線大廠爹土,華為的UA可圈可點甥雕,和三星有些類似,華為的UA是按照產(chǎn)品線來進行標注識別的胀茵,主要分為huawei(華為)和honor(榮耀)兩個系列社露,所以華為的UA識別也和簡單:/huawei|honor/ig一個正則足夠了。OPPO:
出乎意料的oppo手機相當?shù)亩嘣椎簦磥韔ppo的營銷做得相當不錯啊呵哨,不過他們家的UA已經(jīng)超越小米到了令人發(fā)指的程度,同一款手機有各種不同的表達轨奄,簡直崩潰孟害,更可怕的是,根本沒法通過簡單正則判斷是不是oppo手機挪拟。vivo:
這個廠的手機UA做的相當規(guī)范挨务,不管什么型號,至少都是以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-L01OPPO:
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/JDQ39vivo:
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/LMY47DHTC:
HTC T528d Build/IMM76D
HTC One X Build/IML74K
HTC M8t Build/LRX22G聯(lián)想:
Lenovo A360t Build/KOT49H美圖:
MeituM2 Build/JDQ39
MeituM4 Build/JDQ39SOYN:
L50t Build/17.1.E.2.67uimi:
UIMI F7 Build/KOT49H樂視:
X600 Build/ABXCNOP5000609151S努比亞:
NX505J Build/KVT49L
NX511J Build/LRX22G
NX601J Build/KVT49L金立:
F103 Build/LRX21M
V188 Build/KOT49H中興:
ZTE G718C Build/KVT49L雜牌:
Q001 Build/KOT49H(歐沃)
Aquaris M5 Build/LRX22G
ZZBAO_Z5E Build/KTU84M(掌中寶)
Nexus 4 Build/LRX22C(google)