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

83qze16e  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(191)

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

guz6ccqo

guz6ccqo1#

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

ckx4rj1h

ckx4rj1h2#

我不确定我是否理解您在这里所说的事件是什么意思,但是如果您想防止与页面上的元素交互,您可以设置一个模态屏蔽...基本上是一个透明的DIV元素来捕获事件,以高z索引定位在您的内容上

相关问题