现象

最近开始用vue了,做了一个微信内嵌的h5页面,某个页面存在一个二维码,在安卓手机上可以长按识别二维码,但是ios不行。

如下图所示:
安卓没有任何问题:

安卓没问题

ios长按就不行了:

ios不行

(出于隐私,马赛克了中间的二维码,见谅见谅)

环境

框架: vue

操作系统: ios

解决办法

后来到处找解决方案,google,,排查了N多原因,什么64px的Bug,什么二维码过大过小等等等等。联系微信开发者中心,问题算是反馈上去了,让我把图片和代码片段上传上去,也上传了,但是就没下文了。(真心不想吐槽了)。那就自己一个个排查问题吧,新建vue项目,一个个地方改,终于发现了

最后!终于发现是vue-router的原因。为了好看采用的是history的模式!结果发现这会导致出现这个Bug。因此将vue-router的mode:history去掉就好了(默认使用的是hash模式的router)

(ps: 小声BB, 坑爹的微信,说来说去不是vue-router的锅,而是微信自己的锅, 至于具体的原因,因为拿不到微信那边的代码,自然就不知道了。。只知道这样可以解决问题,哎。难受)

本文固定链接: http://www.js-code.com/vue-js/vue-js_16345.html