Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Баг со сменой окна. (https://javascript.ru/forum/jquery/21336-bag-so-smenojj-okna.html)

doniv 05.09.2011 19:54

Баг со сменой окна.
 
Здравствуйте.
Я сейчас пишу скромный слайдер и столкнулся вот с какой проблемой.

Когда слайдер запущен, я переключаю вкладку в хроме или фаерфокс (в других не тестил), потом, через некоторое время, снова возвращаюсь на нее, слайдер начинается быстро прокручиваться компенсируя :) все прокрутки, которые я не увидел, пока был на другой вкладке.

Такой баг вообще возможен? Что о нем известно?

Нашел еще одну похожу проблему (без решения): http://javascript.ru/forum/events/18...i-vkladki.html

devote 05.09.2011 21:50

Используйте анимацию в jQuery а не на таймерах, хром при уходе из вкладки замедляет работу таймеров, из-за этого и происходит такое.

doniv 05.09.2011 22:18

Цитата:

Сообщение от devote (Сообщение 125046)
Используйте анимацию в jQuery а не на таймерах, хром при уходе из вкладки замедляет работу таймеров, из-за этого и происходит такое.

Спасибо, но проблема была во всех браузерах. Скорее всего она связана с чем-то более глобальным, чем замедление.

Добавил обработку на события при возвращении и переключении вкладки/окна.

Решение:

$(window).blur(function(){
            clearInterval(autoSlide); //Останавливаем слайдер
});

$(window).focus(function(){
            clearTimeout(newAutoslide);
            newAutoslide = setTimeout(function(){SliderSlide(startItem)}, timeSlider); //Перезапускаем слайдер через минуту.
});

kichSman 06.09.2011 03:33

А что если останавливать анимацию с потерей фокуса, например: блока, документа или самого окна - одно из трех должно помочь.

doniv 06.09.2011 15:05

Цитата:

Сообщение от kichSman (Сообщение 125097)
А что если останавливать анимацию с потерей фокуса, например: блока, документа или самого окна - одно из трех должно помочь.

О чем я и написал комментарием выше.

Тем не менее, такое решение все равно порадило кучу багов. И в итоге, как и посоветовал devote, я использовал animate c замыканием саму на себя в колбэк функции.


Часовой пояс GMT +3, время: 19:44.