通过ua来判断内核:
移动端判断简易版:
let ua = navigator.userAgent; let isAndroid = /android/i.test(ua); let isIOS = /(iPhone|iPad|iPod|IOS)/i.test(ua); let isWechat = /microMessenger/i.test(ua);
如何通过ua区分QQ内置浏览器与QQ浏览器:
- 在Android上
QQ内置环境的ua中有关键字 MQQBrowser, 并且后面有一个QQ字符,QQ浏览器则没有。
因此在Android上区分,需要用正则判断ua中包含MQQBrowser并且之后包含QQ,则是QQ内置浏览器,ua中包含MQQBrowser但是不包含QQ则是QQ浏览器
- 在ios上
QQ内置浏览器的ua包含一个空格加QQ,但是不包含MQQBrowser
QQ浏览器ua包含MQQBrowser但是不包含单独的QQ
const isIosQQ = (isIos && / QQ/i.test(navigator.userAgent)); const isAndroidQQ = (isAndroid && /MQQBrowser/i.test(navigator.userAgent) && /QQ/i.test((navigator.userAgent).split('MQQBrowser')));
移动端判断详细版:
var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端 ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 }; }(), language: (navigator.browserLanguage || navigator.language).toLowerCase() } if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) { //如果是ios系统就执行 console.log('这是ios系统'); } else if (browser.versions.android) { //如果是android系统就执行 console.log('这是android系统'); } var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger") { console.log('这是微信浏览器') } else { console.log('这不是微信浏览器'); }
判断是移动端还是PC端:
if (/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent)) { //移动端 console.log("这是移动端"); }else{ //pc端 console.log("这是pc端"); }