const query = wx.createSelectorQuery();
query.select('#canvasBox').fields({ // 需要获取的节点相关信息
node: true, // 是否返回节点对应的 Node 实例
size: true // 是否返回节点尺寸(width height)
}).exec((res) => {
const canvas = res[0].node; // canvas就是我们要操作的画布节点
this.canvas = canvas;
const ctx = canvas.getContext('2d')
const qrImg = canvas.createImage();
qrImg.src = this.headerImg.path;
qrImg.onload = ()=>{
//绘制二维码
ctx.drawImage(qrImg,0,0,320,320);
ctx.restore();
//还能打印日志到这边
const measure=ctx.measureText(this.title).width; //绘制到这边就异常退出,this.title是有值的,可能有emoji
//此行执行不到
}
});
//在弱网络环境下容易崩溃退出小程序
碰到过,ctx.measureText 这个方法在iOS机型上巨慢,自己写个函数处理 /** * 计算文字宽度 * @param {Number} fontSize 字体大小 * @param {String} str 文字 */ function measureText (fontSize, str) { if (!str) return 0 if (typeof str !== 'string') { str += '' } return (str.replace(/[^\x00-\xff]/g, 'ab').length / 2) * fontSize }