You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载含Image的JSON后,Fabric.js新增TextBox无法显示的问题排查

问题原因分析

核心问题在于Fabric.js加载含图片的JSON时,图片资源是异步加载的,你添加fabric.Textbox的代码是同步执行的,导致文本框的渲染时机和画布的异步加载流程冲突:

  • 加载包含矩形(Rect)的JSON时,所有元素都是纯数据,canvas.loadFromJSON会同步完成解析和渲染,后续添加的文本框能正常被画布捕获并渲染。
  • 加载包含图片(Image)的JSON时,图片资源需要异步加载,canvas.loadFromJSON先解析JSON结构,再后台加载图片。此时同步执行的canvas.add(textbox)虽把文本框加入画布,但画布正处于等待图片加载的状态,后续重绘流程没正确包含这个新元素。

解决方法是把添加文本框的逻辑放到loadFromJSON的回调函数里,确保所有异步资源加载完成后再添加元素:

canvas.loadFromJSON(jsonWithImage, function() {
  // 所有资源加载完成后执行
  const textbox = new fabric.Textbox('测试文本', {
    left: 100,
    top: 100,
    width: 200
  });
  canvas.add(textbox);
  canvas.renderAll(); // 手动触发重绘确保显示
});

内容的提问来源于stack exchange,提问作者MyDaftQuestions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:59:53