Events 如何使事件在DOJO中运行时不会发生?

Events 如何使事件在DOJO中运行时不会发生?,events,dojo,Events,Dojo,是否有某种方法可以禁用所有事件,直到在DOJO中完成事件?例如,我正在淡出元素,用户可以再次单击该事件,但它将不会完成最后一个事件。我不确定我是否理解您在这里所说的事件的含义,但如果您想阻止与页面上的元素交互,您可以设置一个模式屏蔽。。。基本上是一个用于捕获事件的透明DIV元素,以高z索引定位在您的内容上,我不确定我是否理解您这里所说的事件的含义,但是如果您想阻止与页面上的元素交互,可以设置一个模式屏蔽。。。基本上是一个用于捕获事件的透明DIV元素,它以高z索引定位在您的内容上。如果您控制所有需

是否有某种方法可以禁用所有事件,直到在DOJO中完成事件?例如,我正在淡出元素,用户可以再次单击该事件,但它将不会完成最后一个事件。

我不确定我是否理解您在这里所说的事件的含义,但如果您想阻止与页面上的元素交互,您可以设置一个模式屏蔽。。。基本上是一个用于捕获事件的透明DIV元素,以高z索引定位在您的内容上,我不确定我是否理解您这里所说的事件的含义,但是如果您想阻止与页面上的元素交互,可以设置一个模式屏蔽。。。基本上是一个用于捕获事件的透明DIV元素,它以高z索引定位在您的内容上。如果您控制所有需要禁用的事件,您可以尝试使用全局变量作为“锁”-在启动动画时将其设置为打开(如果发现触发了此标志,则将所有事件中止),并在动画结束时将其取消设置

Javascript不是并发的(因此您不需要担心计时问题和“实际”锁定),但衰落可能在幕后使用setTimeout(允许在完成之前触发其他事件)。如果是这种情况,请记住您需要使用ONED回调来正确检测动画何时结束

var lock = false;
function my_event_handler(evt){
    if(lock) return; //someone else is using the lock; 
    //perhaps cancel event propagation as well?

    lock = true;

    dojo.anim({
        ...
        onEnd: function(){
            lock = false;
        }
    });
}

警告:这是我头顶上的伪代码。如果您没有注意到,我已经有一段时间没有使用dojo动画了:P

如果您控制所有需要禁用的事件,您可以尝试使用全局变量作为“锁”-在启动动画时将其设置为打开(如果发现触发了此标志,则使所有事件中止),并在其结束时取消设置

Javascript不是并发的(因此您不需要担心计时问题和“实际”锁定),但衰落可能在幕后使用setTimeout(允许在完成之前触发其他事件)。如果是这种情况,请记住您需要使用ONED回调来正确检测动画何时结束

var lock = false;
function my_event_handler(evt){
    if(lock) return; //someone else is using the lock; 
    //perhaps cancel event propagation as well?

    lock = true;

    dojo.anim({
        ...
        onEnd: function(){
            lock = false;
        }
    });
}
警告:这是我头顶上的伪代码。如果您没有注意到,我已经有一段时间没有使用dojo动画了:P