最近工作的时因为有分享的需求,里面需要动态展示,并且需要用户能保存下来图片并且识别图中的二维码
就用到了html2canvas 这个插件,用的时候也遇到了不少坑,但还是磕磕绊绊用下来的,在此总结一下
1.引入使用
既然是插件,那引入方法跟其他的一样,直接
<script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.js"></script>
就可以使用了
下面附上使用的代码片段
document.addEventListener('gesturestart', function(event) {
event.preventDefault();
});
let canvas2 = document.createElement('canvas'),
_canvas = document.querySelector('.fxBox'),
w = parseInt(window.getComputedStyle(_canvas).width),
h = parseInt(window.getComputedStyle(_canvas).height);
canvas2.width = w * 2;
canvas2.height = h * 2;
canvas2.style.width = w/100 + 'rem';
canvas2.style.height = h/100 + 'rem';
let context = canvas2.getContext('2d'),
rect = $('.fxBox').get(0).getBoundingClientRect();
context.scale(2, 2);
context.translate(-rect.left,-rect.top);
html2canvas($('.fxBox'),{
canvas: canvas2,
allowTaint:false,
useCORS: true,
width: 630,
height: 944,
dpi: window.devicePixelRatio * 2,
}).then(canvas => {
document.body.appendChild(canvas)
var box = document.querySelector('.fxBox')
box.style.display='none'
});
2.跨域问题
使用这个插件很容易就会碰到跨域问题,解决这个问题需要前后端都进行配置
①后端支持:图片要是cdn上的地址,并且允许图片跨域,header头中设置应为
Access-Control-Allow-Origin: *
②前端配置
useCORS: true,