微信开发之疑难杂症

2017-11-09  本文已影响787人  回调的幸福时光

生成图片


上一篇文章中介绍了dom-to-imghtml2canvas两个插件,今天再介绍下其中隐藏的坑。

dom-to-image 兼容性

Internet Explorer is not (and will not be) supported, as it does not support SVG <foreignObject> tag
Safari is not supported, as it uses a stricter security model on <foreignObject> tag. Suggested workaround is to use toSvg and render on the server.`

简单翻译过来就是,不支持IE和Safari浏览器,同时需要注意,在ios设备上微信使用的内置浏览器其实就是Safari。

html2canvas

图片格式


关于图片格式,最好使用png、jpg、jpeg。

因为svg、base64等在微信端表现不太良好,会导致以下几个功能失效:

 长按保存图片失败
 长按识别二维码失败
 发送给朋友失败

但是前端生成的图片一般都是base64格式的字符形式。

解决方案:将base64上传给后台,获取返回的url。

图片模糊


先说说为什么会模糊。

将dom转换成canvas,实质是根据样式将html用canvas画出来,此时是一个像素点渲染一个像素,这在普通屏幕上是清晰的。
但是二倍屏、视网膜屏等是两个像素点渲染一个像素,相当于canvas被放大了,就会变得模糊。

解决方案:
根据设备像素比,动态的转换canvas。

生成二维码


vue-qrcode

长按识别二维码


长按识别二维码失败,长按无识别二维码选项的可能原因:

sdk config失败


首先开启debug模式,查看错误原因。和后台多沟通,看看是否是因为签名不正确导致。

通常都是前端向后端请求,后端返回配置参数,安装正常情况来说,大多数返回的结果应该是正确的,但也有可能返回的错误的。

此时前端可以 暴力破解

具体方案:
给予3次机会,当连续3次调用接口后配置都失败,给予用户提示,关闭页面,重新进入。

授权失败


授权失败原因就负责了,也超出了前端的范围,尽快找运维、后台解决吧。
排查步骤:

参考

微信公众平台
js-sdk demo
dom-to-image
浅析 js 实现网页截图的两种方式
canvas在高倍屏下变模糊的处理办法

上一篇 下一篇

猜你喜欢

热点阅读