大家好。我用 qrcode.js 生成二维码,画在 canvas 上,然后用 canvas 的 toDataUrl 方法转换成 base64 ,作为 img 标签的 src 属性,展示在页面上。在 chrome 开发者工具和微信开发者工具中都没问题,但是拿到真机上测试,我的小米8 就不显示二维码。还有台同事的苹果7是显示二维码的,再就没有别的机器可以测试了。
代码如下
function drawImage() {
let canvasElement = document.querySelector('#canvas');
let context = canvasElement.getContext('2d');
var imageObj = new Image();
imageObj.onload = drawImageActualSize;
imageObj.src = './static/imgs/food1.jpg'
imageObj.setAttribute("crossOrigin",'Anonymous')
function drawImageActualSize() {
let startx = (canvasElement.width - imageObj.width) / 2
let starty = (canvasElement.height - imageObj.height) / 4
context.drawImage(this, startx, starty);
drawQrcode(context, startx, canvasElement.height - 110)
let imgData = canvasElement.toDataURL("image/jpeg");
let imgDiv = `<img src=${imgData} style="height: 100%;" />`
document.querySelector('.img-wrapper').insertAdjacentHTML( 'beforeend', imgDiv )
}
}
小弟还是初级水平,遇到这种情况也不知到如何解决,身边也没人可以请教,还望大家多多指点。
大概率是在生成二维码之后的img标签中的src为空。
//把代码放到事件队列后面
setTimeout(function(){
},0);