昨天刚刚吐槽微信内置浏览器的问题。今天又遇到了。iOS 不同版本下微信内置浏览器长按二维码不能识别。

2015-05-14 17:54:36 +08:00
 alex321
昨天刚刚吐槽微信内置浏览器的问题。今天又遇到了。iOS 不同版本下微信内置浏览器长按二维码不能识别。
情况是这样的。我有一只 Moto G GPe Android 5.1 的手机,一只 iPhone4 iOS 6.1.3 的手机,一只 iPhone6 iOS8.1.1 的手机,所有的微信都是通过 play 或者 app store 安装的最新版本。
然后,我试着打开一个自己做得网页,网页上有一段微信 api 生成的推广事件二维码,长按二维码图片,图片是独立的,只有二维码,结果 Moto G GPe 和 iPhone4 都能正常加载出扫描二维码的功能,并且做出符合预期的动作;独独 iPhone6 死活不显示,长按只有 Favorite 和 Save Image 功能。我换了不同二维码精度、尺寸的十多二十张图片了,就是 iPhone6 很诡异地不能加载处扫描二维码的功能。

我知道 v2 上有很多微信的童鞋,希望能赐教一二呢。
10101 次点击
所在节点    问与答
8 条回复
alex321
2015-05-14 17:57:29 +08:00
@DzMonster 从微信 android 风格切换帖子中看到,劳烦赐教呢。
leojoy710
2015-05-14 17:58:44 +08:00
总觉得微信浏览器会拦截所有请求然后做过滤 所以会导致页面加载比较慢...
alex321
2015-05-14 18:02:02 +08:00
@leojoy710 这个和浏览器拦截没啥关系。是已经加载完全了的页面。长按页面中的图片,微信自己会识别出图片来做对应的处理呢。
我所说的加载处出扫描二维码的功能是说微信 app 自己的功能,这块是内置浏览器加载完网页之后的事情了。
airyland
2015-05-14 18:09:44 +08:00
我们遇到的情况是如果二维码是弹窗显示的,那么不要用fixed定位,在某些机子上真的无法识别。改用absolute定位解决。
b821025551b
2015-05-14 18:12:11 +08:00
用img标签没?
alex321
2015-05-14 18:13:25 +08:00
@airyland 木有弹窗呢。直接在页面上显示出来的。图片周边的代码为:
<section><div><dl><dt><img src="url" alt="qrcode"/></dt></dl></section>
页面的声明是:<meta content="width=device-width, initial-scale=1, maximum-scale=1.2, user-scalable=0" name="viewport" />
我在 segmentfault 找到类似问题: http://segmentfault.com/q/1010000002737751。
alex321
2015-05-14 18:14:23 +08:00
@b821025551b 用了,参见 #6。
alex321
2015-05-14 18:25:01 +08:00
好吧,我找到原因了。原因是,页面顶部用了 fixed 的顶部通栏做标题处理。然后 iOS8 下的微信内置浏览器渲染的时候把下面那块遮覆住了。但奇迹般的是,iOS6 和 Android5.1 下面的微信内置浏览器渲染都没问题。
解决方法是,我临时把二维码图片移到了页面相对下方一点的地方。

@leojoy710
@airyland
@b821025551b

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX