Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2011, 19:54
Аватар для doniv
Аспирант
Отправить личное сообщение для doniv Посмотреть профиль Найти все сообщения от doniv
 
Регистрация: 02.03.2010
Сообщений: 73

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

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

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

Нашел еще одну похожу проблему (без решения): jquery слайдер, анимация при переключении вкладки

Последний раз редактировалось doniv, 05.09.2011 в 20:37.
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2011, 21:50
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Используйте анимацию в jQuery а не на таймерах, хром при уходе из вкладки замедляет работу таймеров, из-за этого и происходит такое.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2011, 22:18
Аватар для doniv
Аспирант
Отправить личное сообщение для doniv Посмотреть профиль Найти все сообщения от doniv
 
Регистрация: 02.03.2010
Сообщений: 73

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

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

Решение:

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

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

Последний раз редактировалось doniv, 05.09.2011 в 22:49.
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2011, 03:33
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

А что если останавливать анимацию с потерей фокуса, например: блока, документа или самого окна - одно из трех должно помочь.
Ответить с цитированием
  #5 (permalink)  
Старый 06.09.2011, 15:05
Аватар для doniv
Аспирант
Отправить личное сообщение для doniv Посмотреть профиль Найти все сообщения от doniv
 
Регистрация: 02.03.2010
Сообщений: 73

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Firefox 5. Перестали работать всплывающие окна mikel Общие вопросы Javascript 3 24.06.2011 13:36
Плавное открытие окна. Flashton Элементы интерфейса 3 20.10.2010 16:00
Вставка данных в textarea из модального окна (для Markitup) Roman Koff jQuery 0 26.08.2010 23:21
Баг с jpeg в ie6 JsLoveR Элементы интерфейса 20 28.01.2010 20:57
Вывод данных единожды, при открытии окна? Ggorsh Events/DOM/Window 1 28.04.2009 01:04