如果你的网页需要在微信公众号/普通浏览器/微信小程序中运行,如何判断环境,这种小问题也有暗坑哦。
这里的需求是在不通的环境,需要跳转到指定url网页,但是小程序内嵌web-view跳转方式需要使用特定api。
if (/MicroMessenger/i.test(window.navigator.userAgent)) {
//微信环境
window.wx.miniProgram.getEnv(function (res) {
if (res.miniprogram) {
//微信小程序
wx.miniProgram.navigateTo({ url });
} else {
//微信网页
location.href = url;
}
});
} else {
//非微信浏览器
location.href = url;
}
按照官方文档,引用 wx.js 之后,可以通过wx.miniProgram.getEnv判断环境,而实际上在非微信环境,getEnv并不会执行回调(而且getEnv实际上并不是异步执行的...当微信WeixinJSBridge加载完成时为同步执行,未加载仍是异步)。
所以先通过UA判断是否在微信环境即可解决。