看到帖子说安卓的webview UA带有miniprogram,而iOS没有
而iOS的window.__wxjs_environment === 'miniprogram'是有效的,部分安卓似乎无效
那么可不可以这么判断, 以获得一个准确的结果:
const isInWechatMP = () => {
return (navigator.userAgent.match(/micromessenger/i) && navigator.userAgent.match(/miniprogram/i)) || window.__wxjs_environment === 'miniprogram';
};
期待官方答复!
微信 sdk 1.6.0 实际上也是用 __wxjs_environment 判断,看来 getEnv 也不靠谱哦。
https://res.wx.qq.com/open/js/jweixin-1.6.0.js
getEnv: function(e) { O(function() { e({ miniprogram: 'miniprogram' === o.__wxjs_environment }) }) }
赞
貌似可以这样检测的,得到了官方答复
https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
那还不简单
web-view 是要先设置 src 你直接在url后面加个 参数 说明这是小程序 比如 https://xxxx?type=mp
然后js问题 了
比如 location.href 看看链接有没有这个参数
官方的方法的缺陷是不能够立即判断。如果想立即判断,就要通过UA,或者其他的方式。我想要知道iOS的window.__wxjs_environment === 'miniprogram'是不是在更高一级的层面写入的,我测下来,iOS的每次都可以判断成功,想得到官方证实。
url加参数是一个解决方案,但是如果是人为的投放url,有可能会造成出错,把非小程序webview环境,也判断为webview环境。