如何使用Javascript取消HTML5拖放操作?

时间:2013-08-01 15:48:44

标签: javascript html5 drag-and-drop

我想根据某些条件取消HTML5拖动操作。我试图搜索这个,但没有发现任何有用的东西。似乎无法使用JavaScript取消HTML5拖放。 return中的false dragstart似乎没有做任何事情。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以通过在事件处理程序中调用event.preventDefault()来取消它。 例如,这应该起作用:

<p id="p1" draggable="true" ondragstart="dragstart_handler(event);">This element is draggable.</p>

<script>
var enableDragDrop = true;
function dragstart_handler(ev) {
    if (!enableDragDrop) {
        ev.preventDefault();
    }
    console.log("dragStart");
}
</script>

答案 1 :(得分:0)

我认为你需要做一些棘手的事情才能让它发挥作用,因为我不知道如何阻止来自js的拖拽,但是你可以用mousedownmousedown,{{{{ 1}}和mouseup标志

一些代码如下:

&#13;
&#13;
isDragging
&#13;
&#13;
&#13;

答案 2 :(得分:-2)

编辑: 得到它了。它有点迂回,但有效。利用拖动事件是可取消的鼠标事件这一事实,取消它会停止所有进一步的拖动操作。根据您的条件创建拖动事件并调用preventDefault()。以下内容在3秒后取消:

setTimeout(function(){document.getElementById("drag").ondrag = function(e){
    e.preventDefault();
    this.ondrag = null;
    return false;
};},3000);

首先请注意,我在取消后清除了所有的ondrag事件,如果你需要其他的ondrag事件,你可能需要调整它,其次,这真的取消了拖动的所有部分,所以你没有得到ondragend事件之后,如这个jsfiddle所示: http://jsfiddle.net/MaxPRafferty/aCkbR/

来源:HTML5规范:http://www.w3.org/html/wg/drafts/html/master/editing.html#dndevents