【问题标题】:Javascript drag and drop - delay for allowdropJavascript拖放-allowdrop的延迟
【发布时间】:2014-07-04 12:14:06
【问题描述】:

我目前遇到以下问题:

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

这是我的代码:

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 函数是拖动事件。 ev.preventDefault() 允许丢弃不能在那里发生,因为该函数是异步的。 有什么想法吗?

谢谢,

马蒂亚斯

【问题讨论】:

  • 你能举个例子吗,像小提琴一样?

标签: javascript drag


【解决方案1】:

您能否详细说明您要达到的目标,我可以更全面地回答?

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

我认为您可能对拖动事件的传播方式感到困惑,这就是您认为需要超时的原因?但是阻止事件队列以确定您是否接受放置,或者在它已经冒泡到顶部并由浏览器以默认方式处理(即不接受放置)之后尝试取消拖动事件是'不去上班。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2011-08-08
    相关资源
    最近更新 更多