微信开发者工具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),
最终效果
热门推荐
地龙粉在心血管保健中的应用:功效与风险并存
济南章丘古城全攻略:68元门票畅游文化古迹与特色美食
跨境如串门:云南瑞丽“一寨两国”的独特生活
干红葡萄酒醒酒指南:从醒酒器选择到醒酒技巧
洛阳12处古建筑:从龙门石窟到白马寺,尽显5000年文明魅力
瓜子的健康真相:适量食用有益,两类瓜子要少吃
"0H"在编程中的多重身份:从十六进制到系统时间守护者
猫一辈子待在家里,不出门,会觉得无聊吗?
北方传统糯米红枣粽子
上海公布市域线票价:起步价4元,最高时速达160公里
王丽和王文的公益慈善之路
小学生作业现“栓Q”等网络黑话,多地开展语言规范教育
广西全州十大景区:千年古刹、高山天湖、温泉度假一文全览
一课研究之小学数学中巧用画图策略来解题
爱丽丝梦游仙境:情绪波动的心理学解密
中国旅游景点之——四川峨眉山
“贝碧嘉”成74年来登陆上海最强台风,江浙皖现大风暴雨
“趸”字书法探秘:笔顺笔画小程序助力书法学习
国家药监局通报4起违法案例,春节网购药品需警惕这些风险
京台高速:北京到台北的千里传奇
复方肝素钠尿囊素凝胶使用指南:5大功效与禁忌
美的电磁炉故障速修攻略
冬季电磁炉保养全攻略:让爱炉安全过冬
选购高效采暖暖气片指南
股市连续三日下跌,专家详解补仓策略与风险控制
新年祝福语大升级:5个技巧让你的祝福温暖人心
八字合婚,你还在迷信吗?
1月5日铁路调图:全国增开230列客运列车,北京首开至西安动车
告别疲惫社交:从真诚到独立的12个交往之道
大蒜蜂蜜:科学证实的养生搭档,5步制作享受多重健康效益