微信开发者工具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),
最终效果
热门推荐
单位交的五险是哪五种保险?具体说一下五种保险的作用
事关安全!如何选购、使用电动自行车?
睡前揉开这条筋,坚持1个月!肝血补足了,眼睛也就亮了
驻马店有哪些美食?跟着吃货游驻马店,美味不重样!
加拿大旅游签证办理攻略:最新政策下如何轻松拿签?
加拿大签证被拒?教你一招翻盘!
加拿大签证必备:完美在职证明模板
军歌嘹亮九十七载:《中国人民解放军军歌》的前世今生
哈小浪的双十一星座运势大揭秘
正常人可以吃丹参片吗?丹参片适宜人群与禁忌人群全解析
过年聚会上如何巧妙维护职场关系?
春节症候群:如何应对家族聚会带来的压力?
春节聚餐全攻略:从团圆饭到回娘家的习俗与创新
春节聚餐如何避免伤害亲情?
过年聚会不冷场:聊聊你的旅行和追剧心得
福和:增城的客家文化名片
龙岩到太原火车沿线严冬装指南
龙岩到太原最新火车行程出炉!
AI租房系统:引领住房租赁市场智能化变革
孟良崮战役纪念馆:红色旅游打卡新地标
从零开始理解GDP:衡量国家财富的秘密武器
2025蛇年本命年饰品指南:红绳、蛇形饰品、本命佛吊坠怎么选?
蛇年本命年的三大开运神器推荐
2025蛇年本命年,这些蛇形饰品保你大吉大利!
松茸降到200元/公斤!鸡枞、见手青、青头菌……
【“钱”途指南】学什么专业最赚钱?2024美本专业生薪资排行揭晓!
重庆最美夜景打卡攻略:南山一棵树观景台&洪崖洞
人民网直播探秘大足石刻:千年文化遗产的保护与传承
秋冬自驾游重庆:川渝最美风景线
听力三级残疾人可以申请什么补助金项目