Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
allowdrop的Javascript拖放延迟_Javascript_Drag - Fatal编程技术网

allowdrop的Javascript拖放延迟

allowdrop的Javascript拖放延迟,javascript,drag,Javascript,Drag,我目前遇到以下问题: 我需要在dragover发生时创建一个延迟,然后检查当前dragover对象是否仍然相同。当它是同一个对象->执行代码时 这是我的代码: var draggedId = null; var triggered = false; function allowDrop(ev) { draggedId = ev.target.id; setTimeout(function () { if (draggedId == ev.target.id &&

我目前遇到以下问题:

我需要在dragover发生时创建一个延迟,然后检查当前dragover对象是否仍然相同。当它是同一个对象->执行代码时

这是我的代码:

var draggedId = null;
var triggered = false;

function allowDrop(ev) {

draggedId = ev.target.id;

setTimeout(function () {

    if (draggedId == ev.target.id && ev.target.id != "" && !triggered) {
        triggered = true;
        draggedId = "";
        ev.preventDefault();
    }

}, 2000);

}

function drop(ev) {
ev.preventDefault();
}

function dragLeave(ev) {

draggedId == "";
triggered = false;
}
Allowdrop函数是dragover事件。 ev.preventDefault()以允许删除不能在那里发生,因为该函数是assync。 有什么想法吗

谢谢


马蒂亚斯你能解释一下你想要达到的目标吗?我能更全面地回答你的问题吗

通常情况下,您不能总是确定放置是否有效,您最好在页面上设置放置区域,并让它们根据您对放置的了解取消dragover事件。如果您想让应用程序使用跨窗口拖动,那么您不能依赖全局变量来存储有关拖动内容的信息,并且您实际上无法看到拖动内容中的内容-您只能知道拖动的内容。因此,如果下降可能是可以接受的,您需要取消该事件。看


我想也许你对DrageEvents是如何传播的感到困惑,这就是你认为需要暂停的原因?但是阻止事件队列以确定您是否接受拖放,或者在拖动事件已冒泡到顶部并由浏览器以默认方式处理(即不接受拖放)后尝试取消拖动事件是行不通的。

您能举个例子吗,比如小提琴?