背景
判断ua来决定不同的执行策略是业务中的刚需,下面就分享下如何具体判断ua .
备注:前面两条是微信官方给的判断ua的简易版的代码。
区分企微和微信代码
var isWXWork = ua.match(/wxwork/i) == 'wxwork';
var isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger';
区分手机端还是pc
var isMobile = false;
var isDesktop = false;
if(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
isMobile = true;
} else {
isDesktop = true;
}
个人详细版返回ua来源
/**
* @description 定义出pc 和 手机端 并区分出终端类型
* @param {*} ua
* @returns
*/
export function getSource(ua) {
const isWx = ua.match(/MicroMessenger/i);
let source = "";
if (isWx && !!isWx.length) {
if (ua.includes("wxwork")) {
source = "wxwork";
} else {
source = "wx";
}
} else if (ua.includes("DingTalk")) {
source = "dd";
} else {
source = "other";
}
const isPhone = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i;
if (!(ua.match(isPhone) && ua.match(isPhone).length)) {
if (source !== "other") {
source += "-pc";
} else {
source = "pc";
}
} else if (source === "other") {
source = "h5";
}
return source;
}
返回参数说明:
标识 | 说明 |
---|---|
wxwork | 企业微信手机端 |
wxwork-pc | 企业微信电脑端 |
wx | 微信手机端 |
wx-pc | 微信电脑端 |
dd | 钉钉手机端 |
dd-pc | 钉钉电脑端 |
h5 | 手机端(除以上) |
pc | 电脑端 |