allowdrop的Javascript拖放延迟
我目前遇到以下问题: 我需要在dragover发生时创建一个延迟,然后检查当前dragover对象是否仍然相同。当它是同一个对象->执行代码时 这是我的代码: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 &&
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是如何传播的感到困惑,这就是你认为需要暂停的原因?但是阻止事件队列以确定您是否接受拖放,或者在拖动事件已冒泡到顶部并由浏览器以默认方式处理(即不接受拖放)后尝试取消拖动事件是行不通的。您能举个例子吗,比如小提琴?