Цитата:
|
можешь засечь промежутки между срабатыванием таймера,
это даст пищу для размышлений. Посмотри как ведёт себя обработчик когда тебя нет на странице, и как ведёт себя в момент переключения.
<script>
//глобальная переменная
var oldTime;
f=function(){
//внутри обработчика
var d = new Date(),time=0;
time=d.getTime();
// результат смотреть будем в консоли
console.log(d.toLocaleTimeString(),"=",time-oldTime);
//выведем на экран, для наглядности на форуме
window.document.write(d.toLocaleTimeString()+"="+(time-oldTime)+"<br/>");
oldTime=time;
setTimeout(f,1000);
}
f();
</script>
|
Щас попробовал выводить только время срабатывания. Действительно, работает и в фоне, без каких либо проблем.
Я пришел к мысли, что это тормозит jquery, при переключении слайдов у меня используются методы fadein() и fadeout() видимо jq не выполняет их в фоне (что в принципе логично), а накапливает их где то в своем кеше. Как с этим бороться я не представляю. м.б. есть какие то настройки библиотеки, для регулирования таких ситуаций? |
хех. победил это )
перед запуском анимации проверяю состояние state, которое устанавливается так:
$(window).blur(function(){
state = 0;
});
$(window).focus(function(){
state = 1;
});
|
хз, но как вариант можно попробывать определять активность страницы.
Если страница активна тогда таймер работает, если не активна тогда таймер неработает
$(window).blur(function() {
// здесь унечтожим таймер
clearTimeout(timeOut );
});
$(window).focus(function() {
// здесь запустим функцию
autoAdvance();
});
блин на секунду опаздал)) |
Цитата:
Дело в том, что событие $(window).focus происходит не однократно, при получении фокуса, как мы с вами подумали, а постоянно. Именно поэтому я сделал через переменную состояния ) Ради эксперимента можете вызвать алерт из $(window).focus и посмотреть что выйдет ) |
написал простейший слайдер с помощью setTimeout и не вижу никаких проблем о которых говорится в постах
Или неправильно смотрю? http://all-html5.narod.ru/sliders/0/slider.htm |
Цитата:
|
| Часовой пояс GMT +3, время: 06:27. |