如何通过ua简单判断是微信还是企微

2,533 阅读1分钟

背景

判断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电脑端