最近在开发的项目,需要H5页面需要在小程序中和浏览器中执行不同的操作,引用了https://res.wx.qq.com/open/js/jweixin-XXXX.js 各个版本。均在浏览器中无法正常工作。
代码很简单
wx.miniProgram.getEnv(function(res) {
if (res.miniprogram) {
alert(1)
} else {
alert(2)
}
})
通过调试 jweixin 代码发现 getEnv的回调函数在浏览器中根本就不执行,
getEnv: function(e) {
N(function() {
e({
miniprogram: "miniprogram" === r.__wxjs_environment
})
})
}
最新更新:进一步调试发现,
function N(e) {
(d || p) && (r.WeixinJSBridge ? e() : n.addEventListener && n.addEventListener("WeixinJSBridgeReady", e, !1))
}
这里有问题,在这里的d 和 p 在前面赋值的
t = navigator.userAgent.toLowerCase(),
m = navigator.platform.toLowerCase(),
o = !(!m.match("mac") && !m.match("win")),
s = -1 != t.indexOf("wxdebugger"),
d = -1 != t.indexOf("micromessenger"),
l = -1 != t.indexOf("android"),
u = -1 != t.indexOf("iphone") || -1 != t.indexOf("ipad"),
p = -1 != t.indexOf("saaasdk"),
那么问题来了,在浏览器中,d,p 为 false,那么 (d || p) && 后面的语句就不会执行,导致回调函数不执行。而且这个问题各个版本都没有修复。研究到这里不禁要问:腾讯!就这水平?
网友评论