调用wx.scanQRCode:
先看一下微信开发者文档中,调用扫一扫的demo:
wx.scanQRCode({
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
}
});
虽然参数中有scanType,但即使设置为qrCode,部分机型也能成功扫描条形码。
而微信社区中的客服也是承认该bug的存在,但迟迟未能修复。
可参考:
https://developers.weixin.qq.com/community/develop/doc/0008c4032a86586fce2862e935bc00
那么我们尝试自行分析能否解决
先看回调的值:
通过JSON.stringify(res)将返回值打印出来: 值只包含两个keyresultStr:扫描的条码的值
errMsg:
可以看出这其中并不包含码的类型。
结论:
所以部分网上说的,在返回值中,通过res.scanType获取扫码的类型再进行判断是行不通的。
目前微信js sdk的最新版本是1.6.0,除了等待微信下次的更新,就只能穷举条形码的类型,通过码值的开头来进行判断了。