1. 采用的js库
- html2canvas: 采用0.5版本
- qrcodejs :该库已经发布很久,需要自行添加回调事件
2. 生成二维码
- 由于
qrcodejs
没有采用模块化包装,需要自行封装 - 由于qrcode生成二维码没有回传一个事件,需要自行加个回调函数,请参考链接
1 封装:1
2
3
4
5
6
7
8
9
10
11(function(root, factory) {
if (typeof define === "function" && define) {
define(factory);
} else if (typeof exports === "object") {
//Node, CommonJS之类的
module.exports = factory();
} else {
//浏览器全局变量(root 即 window)
root.QRCode = factory();
}
})(this, function() {})
1 | QRCode = function(el, vOption, fn) { // line:1472 |
使用方法:
1 | _self.qrcode=div2canvas.qrcode("#shop-item-share__qrcode",{ |
3.html2canvas
3.1 参考
html2canvas
注意有些css会影响正常生成图片,比如 flex
,css3 transform
此外,html2canvas
需要promise
的支持,建议用 babel-pollyfill 或者 es6-promise
3.2文字叠影问题
html2canvas文字含中文括号或者其他特殊字符的时候,生成图片时会跑到下面,与下面文字重叠,通过给字符加上span
标签解决
1 | function wrap(str){ |
完整代码如下:
1 | define('module/div2canvas', function(require, exports, module){ |