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

Fabric.js对象绑定mouse:down事件无效问题求助

问题

在Fabric.js中为矩形(rect)绑定了mouse:down事件,但点击该矩形时,控制台仅输出“click the canvas”,无法触发矩形自身的“click the rect”事件,该如何解决?

以下是示例代码:

var canvas = window._canvas = new fabric.Canvas('c');

var rect = new fabric.Rect({
    left: 100,
    top: 100,
    fill: 'red',
    width: 100,
    height: 100
  });

canvas.add(rect);

rect.on('mouse:down', function(options){
    console.log("click the rect");
})

canvas.on('mouse:down',function(options){
    console.log("click the canvas");
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.1/fabric.min.js"></script>
<canvas id="c" width="600" height="600"></canvas>

解决方案

原因分析

正常情况下,上述代码点击矩形时应该同时触发矩形和canvas的mouse:down事件。若仅触发canvas事件,大概率是矩形的事件交互属性被禁用,或事件冒泡逻辑需要调整。

解决步骤

  • 确保矩形允许响应事件
    Fabric.js对象默认开启事件响应,但可显式设置evented: true确保属性未被意外修改:

    var rect = new fabric.Rect({
        left: 100,
        top: 100,
        fill: 'red',
        width: 100,
        height: 100,
        evented: true // 强制开启事件响应
    });
    
  • 按需阻止事件冒泡
    若需求是点击矩形时仅触发自身事件、不触发canvas事件,可在矩形的事件处理函数中阻止事件传递:

    rect.on('mouse:down', function(options){
        console.log("click the rect");
        options.e.stopPropagation(); // 停止事件冒泡到canvas
    })
    
  • 验证事件绑定时机
    事件绑定在矩形添加到canvas前后均可生效,你的现有代码绑定时机正确,无需调整。

  • 检查版本兼容性
    你使用的5.3.1版本为稳定版,若问题仍存在,可尝试升级至最新稳定版排查版本bug。

完整修正代码

var canvas = window._canvas = new fabric.Canvas('c');

var rect = new fabric.Rect({
    left: 100,
    top: 100,
    fill: 'red',
    width: 100,
    height: 100,
    evented: true
});

canvas.add(rect);

rect.on('mouse:down', function(options){
    console.log("click the rect");
    options.e.stopPropagation(); // 可选:关闭canvas事件触发
});

canvas.on('mouse:down',function(options){
    console.log("click the canvas");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.1/fabric.min.js"></script>
<canvas id="c" width="600" height="600"></canvas>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:31:16