我想根据某些条件取消HTML5拖动操作。我试图搜索这个,但没有发现任何有用的东西。似乎无法使用JavaScript取消HTML5拖放。 return
中的false
dragstart
似乎没有做任何事情。有什么想法吗?
答案 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的拖拽,但是你可以用mousedown
,mousedown
,{{{{ 1}}和mouseup
标志
一些代码如下:
isDragging
&#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