微信开发者工具Canvas2D渲染报错解决方案
创作时间:
作者:
@小白创作中心
微信开发者工具Canvas2D渲染报错解决方案
引用
CSDN
1.
https://blog.csdn.net/carfge/article/details/139004729
注:本文具有时效性
背景
最近发现之前用canvas绘制的背景图,在最新版微信开发者工具控制台会报错:[渲染层错误] Uncaught TypeError: this._getData is not a function
问题
现在微信开发者工具 渲染不出背景图 ,大部分真机中渲染正常无报错,小部分安卓机(如华为Android12)渲染成功但过几秒就会引起 微信闪退 ,小程序没有抓到任何报错。
定位排查
代码一步步屏蔽排查后,发现是setData方法在设置canvas宽高时导致报错。
<view class="preview" id="preImage"> <canvas type="2d" id="foodCanvas" style="width: {{canvasWidth}}px;height: {{canvasHeight}}px;"></canvas>
解决方案
- 若知道canvas标签的父元素宽高,则可通过css设置canvas宽高均为100%,自动撑开继承父级宽高。本人在此处采用了该方案,父元素(id="preview")是flex布局计算得到的区域,不同机型宽高不同,但父元素渲染计算结果是动态固定的。修改后的代码如下:
<view class="preview" id="preImage"> <canvas type="2d" id="foodCanvas" class="canvas"></canvas>
- 若不知道canvas标签及其父元素宽高,必须动态设置宽高,则可以通过wx:if命令来动态渲染。在另一处代码,本人的修改如下:
<canvas type="2d" id="clipCanvas" class="clip-canvas" wx:if="{{imgData.canvas}}" style="width: {{imgData.canvas.width}}px;height: {{imgData.canvas.height}}px;"></canvas>
width: Math.floor(width * scale), height: Math.floor(height * scale),
最终效果
热门推荐
冬季瘦身秘籍:TABATA帮你快速瘦肚子!
感冒药的主要成分及作用
脂肪的秘密:从激素到减脂的科学之旅
妙佑医疗国际:医生推荐的健康瘦肚子方案
营养师姚小谦教你保持积极心态瘦肚子
登山跑:快速瘦肚子的秘密武器!
勐焕大银塔:云南德宏的AAAA级旅游景区,傣族文化的璀璨明珠
土豆:从“魔鬼的食物”到欧洲文明的助推器
联合国认证:马铃薯对全球粮食安全的重要性
秘鲁土豆:从安第斯到全球餐桌的传奇之旅
Joël Robuchon的招牌马铃薯泥:从传奇到传承
马骏解读:碳金融如何赋能绿色经济?
全球碳市场最新趋势解析
双碳目标下,碳金融助力新能源技术突破
【预防中风】不吃药也能改善血脂异常!专家公开6个关键生活习惯
上饶去新疆怎么去最方便:火车列表与飞机票价格及高铁信息汇总
立春将至,揭秘青岛乡村独特“躲春”习俗
立春将至:躲春习俗的现代意义
夏季儿童防胃虫攻略:从个人卫生到家庭防护
汉代龙眼首次亮相:揭秘千年御果传奇
茂名龙眼产业:从“致富果”到乡村振兴“金钥匙”
西兰花的5大令人惊奇的健康益处
夏日限定!粤式荔枝菜大揭秘
合江荔枝丰收:从皇家贡品到全球美味
高州荔枝:千年古荔的数字化转型之路
石峁遗址:一座实证中华五千年文明的史前城址
牙疼也能吃!小米粥的神奇治愈力
牙髓炎来袭,你的心态还好吗?
牙疼救星!布洛芬使用全攻略
布洛芬:牙疼救星还是隐患?