微信小程序,在使用canvas画海报的时候,会导致个别用户无法生成的情况,你们可以尝试把绘画某些块的代码注释掉再进行扫码调试,我前几天就遇到个别客户无法生成商品海报的情况,刚开始是以为上一个同事留的坑,当我重构画海报的页面代码以后,还是出现这种问题。
我在这里提醒开发者们,如果出现设备兼容性问题,请各位开发者不要使用真机调试,因为真机调试可以解决90%以上设备兼容性的问题,可以用扫码预览打开调试进行调试,今天我说的这个问题坑了我2天!电脑上无法复现无法绘画的问题,无奈之下只能让客户配合我这边把有问题的代码注释掉让客户扫码进去以后截图给我看看是什么效果,最终发现了问题,就是在绘画微信用户昵称的时候出现了问题,因为客户微信昵称第六个字符是带表情的,这里注意一下,不是canvas不能绘画表情,是因为我处理了到第五个字的时候就截取用省略号显示,比如:我是微信名.... 这里正好第六个字符是表情,我这边用了substr(0,6)字符串截取前面5个字符进行绘画导致最后draw的时候出现绘画不出海报,这个问题控制台不会有任何报错,下面是错误的截取用户名称代码:
// 检查用户名称第一行大于5个字换行
let username = this.position.drawUserName.content
// username是用户名称 包含表情,不能用substr进行截取 否则绘画海报出现空白 无任何报错
let onelineusername = username.substr(0,6)
最后用了如下解决办法:
先把微信表情过滤掉再换成subString(0,5)进行截取,完美解决!!!
// 过滤微信表情
let username = this.drawUserName.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "");
// 截取前面五个字符然后省略号显示
let onelineusername = username.substring(0,5)