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

时间:2011-09-09 17:32:23

标签: events dojo

在DOJO完成一个事件之前,我有什么方法可以禁用所有事件?例如,我正在淡化元素,用户可以再次单击该事件,它将无法完成最后一个事件。

2 个答案:

答案 0 :(得分:2)

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

Javascript 并发(因此您不必担心时间问题并且具有“实际”锁定)但也许淡化在幕后使用setTimeout(允许其他事件在之前触发)它完成了)。如果是这种情况,请记住您需要使用onEnd回调来正确检测动画何时结束

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

答案 1 :(得分:1)

我不确定我理解你在这里的事件是什么意思,但是如果你想阻止与页面上元素的交互,你可以建立一个模态盾......基本上是一个透明的DIV元素来捕获事件,定位使用高z-index

的内容