【发布时间】:2019-04-09 15:49:57
【问题描述】:
这是一个非常简单的问题,但我似乎找不到答案。
我有一个带有鼠标事件监听器的fabricjs 画布实例。我还有一堆带有鼠标事件监听器的对象。我不希望对象上的鼠标事件传递到画布。 stopPropagation 和/或 stopImmediatePropagation 不要停止事件。
我使用这些方法有错吗?或者有没有Fabricjs 的方式来处理这个?
包装 Fabricjs 画布实例的类上的方法
this.canvas.on("mouse:down", this.handleMouseDown);
Fabricjs 子类上的方法:
testMouseDownHandler: function (event) {
event.e.stopPropagation();
event.e.stopImmediatePropagation();
event.e.preventDefault();
if (event.e.shiftKey) {
this.canvas.setActiveObject(this);
}
},
【问题讨论】:
-
事件监听的添加顺序是什么?如果它们都添加到画布对象中,那么它们将按添加顺序执行。
-
@traktor53 – 画布有一个事件监听器。每个对象都有一个事件侦听器。我没有看到涉及任何订单问题。问题是我不希望对对象的点击通过(冒泡)传递到画布。
-
不确定你的意思。画布元素不能有子元素,因此在 DOM 事件处理中没有任何东西冒泡到画布上。为了让 fabric.js 处理画布上的小部件,它必须监听画布对象上的鼠标事件。
-
嘿@NoGrabbing 有趣的问题,你能创建一个 sn-p 重现这个问题吗?
-
我试过 event.e.stopPropagation();并经历了成功。所以它在 Angular 组件和织物画布的混合环境中对我有用。
标签: javascript fabricjs