Показать сообщение отдельно
  #2 (permalink)  
Старый 29.09.2011, 13:14
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Я плохо знаком с проблемой таймеров, анимацией пока не приходилось заниматься. Но всё же выскажу предположение. Насколько я знаю обработчики событий находятся в специальной очереди, общей для всех событий. Так как javascript язык однопоточный то и события обрабатываются строго по очереди. Если предположить что на закрытой вкладке обработчики только накапливаются а на открытой и накапливаются и исполняются, то при переходе от закрытой вкладки к открытой ты получишь исполнение всех накопленных обработчиков практически сразу,точнее без временных промежутков. Это будет выглядеть как ускоренная анимация. Либо если твои обработчики сами запускают jquery анимацию, ты получешь несколько анимаций сразу.

Как решение в голову приходят два варианта,

1й - задавать вызов следующего обработчик события, непосредственно в самом обработчике. В этом случае гарантированно небудут накапливаться обработчики. Если я правильно понимаю, делать это надо через setTimeout, ибо вызывается он однократно.
setTimeout(function(){
    /* полезный код... */
    setTimeout(arguments.callee, 20);//задаём следующий вызов обработчика в самом обработчике
  }, 20);


2й) В обработчике проверять время между вызовами обработчика(последним и текущим) и если оно меньше положенного, не исполняем полезный код.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 29.09.2011 в 13:58.
Ответить с цитированием