最近在做项目时,遇到一个H5页面在小程序中隐藏部分模块,从而引出一个判断逻辑:H5判断是否在微信小程序中。
刚开始也是不停的度娘,找到用user-agent来判断,起初也是没问题,之后测试测出来个bug,即IOS手机中这个竟然不能用,于是又做了一些功课,找到一个可以用到的方法。如下
/**
* 判断是否为微信小程序
*
* @export
* @returns
*/
export function isWeChatApplet() {
const ua = window.navigator.userAgent.toLowerCase();
return new Promise((resolve) => {
if (ua.indexOf('micromessenger') == -1) {//不在微信或者小程序中
resolve(true);
} else {
wx.miniProgram.getEnv((res) => {
if (res.miniProgram) {//在小程序中
resolve(false);
} else {//在微信中
resolve(true);
}
});
}
});
}
中间试了很多次,都是不行,最后通过查阅小程序官方文档,才知道 if(res.miniProgram) 中的 miniProgram 应该为小写p miniprogram ,以下是正确代码
/**
* 判断是否为微信小程序
*
* @export
* @returns
*/
export function isWeChatApplet() {
const ua = window.navigator.userAgent.toLowerCase();
return new Promise((resolve) => {
if (ua.indexOf('micromessenger') == -1) {//不在微信或者小程序中
resolve(true);
} else {
wx.miniProgram.getEnv((res) => {
if (res.miniprogram) {//在小程序中
resolve(false);
} else {//在微信中
resolve(true);
}
});
}
});
}