在DOJO完成一个事件之前,我有什么方法可以禁用所有事件?例如,我正在淡化元素,用户可以再次单击该事件,它将无法完成最后一个事件。
答案 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
的内容