Как сделать так, чтобы события не происходили во время выполнения события в DOJO? - PullRequest
0 голосов
/ 09 сентября 2011

Есть ли какой-нибудь способ, которым я могу отключить все события, пока событие не будет завершено в DOJO? Например, я угасаю элементы, и пользователь может снова щелкнуть событие, и оно не завершит последнее событие.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Если вы управляете всеми событиями, которые должны быть отключены, вы можете попробовать использовать глобальную переменную в качестве «блокировки» - установите ее при запуске анимации (и отключите все события, если обнаружится, что этот флаг активирован) и снимите флажокэто когда он заканчивается.

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;
        }
    });
}

предостережение: это псевдокод на макушке моей головы.Я давно не использовал анимацию додзё, если вы этого не заметили: P

1 голос
/ 10 сентября 2011

Я не уверен, что понимаю, что вы подразумеваете под событиями здесь, но если вы хотите предотвратить взаимодействие с элементами на странице, вы можете установить модальный щит ... в основном прозрачный элемент DIV для захвата событий, расположенных поверх вашего контента с высоким z-индексом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...