EaselJs canvas dragstart事件没有冒泡到父级

时间:2015-07-12 09:02:20

标签: javascript html5 canvas easeljs createjs

我有许多画布元素,需要可拖动。 (不是canvas元素中的元素,我的意思是实际的canvas DOM节点)

代码看起来像这样

<div class="top-parent" draggable="true">
  <div class="inner-parent">
     <canvas></canvas>
  </div>
</div>

如果我只有一个普通的canvas元素尚未使用createjs进行初始化,那么拖放库我的工作正常(我相信它可以解决html5 dragstart事件)。如果我使用new createjs.Stage(canvas);拖放功能不起作用,则看起来dragstart事件没有冒泡,或者甚至没有注册。

我试过stage.enableDOMEvents = true;这似乎不起作用 - 我认为这是有道理的,因为它应该是默认选项,但我想我还是会尝试。

1 个答案:

答案 0 :(得分:3)

默认情况下,EaselJS Stage实例会对原生触摸/鼠标事件调用preventDefault(),以防止选择画布(并获得难看的选择突出显示)。尝试使用以下代码禁用此功能:myStage.preventSelection = false;。这应该让这些事件正常进行,这可能允许你的拖放库运行。

如果您根本没有在Stage中使用鼠标事件(例如,带有click,mouseDown等处理程序的DisplayObject实例),您可以使用以下命令从DOM事件中完全取消订阅Stage:{{1} }。请注意,myStage.enableDOMEvents(false);是一种方法,而您尝试将其用作示例中的属性。