微信开发者工具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),
最终效果
热门推荐
电针灸的作用与功效
孕妇如何安全使用手机与电脑
物流系统博弈论的生存环境:竞争、合作和非均衡关系
大气污染环境监测仪的数据质量控制与错误纠正
神来也十三张麻雀:规则、策略与文化深度解析
甲状腺结节健康管理方案
拌饺子馅能放蚝油吗?10人9错,牢记“放3样、忌3样”,饺子鲜嫩多汁,吃着贼香
早餐吃够这类食物能帮你减重、控血糖 健康食谱快收藏
快速了解基因检测采样流程
职场困境应对策略:如何化挑战为机遇
不“吹”不相识 他们在音乐里收获友谊
常年不吃早饭可能会伤胆?毓璜顶医院专家详解背后原因
新能源汽车工作原理:混动、增程与纯电
台积电14nm将丢单,流向中芯国际
提高专注力和效率的实用方法
爆火的“指压板超慢跑” 一个月能瘦20斤?医生:有一定效果,但要小心损伤
气相色谱仪操作指南及注意事项
冬天跑步注意事项和建议
怀孕让自律神经失衡?解密孕期身心变化的奥秘
2025年医药行业现状分析:医药企业加速并购CXO产业链
唐代宫廷文化与艺术繁荣
我国科学家发现帕金森病新靶点 有望延缓病程
什么是食品供应链中的关键控制点?
熊果苷和熊果酸有啥区别
GNSS系统概念、组成及应用 | GNSS(RTK)课程学习笔记day1
黑神话悟空配置笔记本
乐林刹车片的质量如何进行评估?评估后如何根据实际情况进行选择?
麦冬、天冬等4种物质获批药食同源 四川“小药材”加快冲刺百亿产业
专家建议全面放开街边夜市,激活城市烟火气与经济活力
AI助理最新动态:智能助手技术突破与应用展望