Вечно бегающий слайдер

zsaz

Старатель
Регистрация
6 Авг 2007
Сообщения
251
Реакции
11
Подскажите пожалуйста.
Вот тут есть слайдер. Для просмотра ссылки Войди или Зарегистрируйся У него автопрокрутка стоит в 5 секунд (менять нельзя)
Если оставить страницу открытой, а самому полазить по другим вкладкам некоторое время (может минуту, а может и меньше) и вернуться обратно на сайт, то слайдер начинает бешено бегать. Как это исправить?
 
Заметила очень крутую штуку, не знаю, поможет ли это Вам или нет. Слайды меняются каждые 5 секунд, если перейти на другую вкладку, положим, на 30 секунд, то возвращаясь на Ваш сайт слайды сменяются быстро ровно 6 раз (30 сек делить на 5) а потом опять нормальный темп. То есть они как бы наверстали упущенное, пока Вас не было. Это мне напоминает штуку о которой я слышала - скриптец для сайтов под рекламу, определяют, на этой ли вкладке сейчас находится пользователь, и если нет, то "замирают", чтобы не было в проплаченных слайдерах "холостых" показов рекламы. Извините, что все так в кучу) выразилась как сумела. Возможно, Вам это поможет в поисках корня проблемы.
 
Подскажите пожалуйста.
Вот тут есть слайдер. Для просмотра ссылки Войди или Зарегистрируйся У него автопрокрутка стоит в 5 секунд (менять нельзя)
Как это менять нельзя?
Держи скрипт твоего слайдера с комментариями - посмотри что какие настройки значат, надеюсь разберешься.
 

Вложения

  • jcarousel.zip
    2,6 KB · Просмотры: 6
Как это менять нельзя?
Держи скрипт твоего слайдера с комментариями - посмотри что какие настройки значат, надеюсь разберешься.
А это не мой слайдер. У меня хоть в коде и подключен он, но не используется. Ниже представлен ВЕСЬ код слайдера
Код:
/* SLider */
$(".slider_nav a:first").addClass("active");
var contentwidth = $(".contentholder").width();
var totalcontent = $(".slide").size();
var allcontentwidth = contentwidth * totalcontent;
$(".contentslider").css({'width' : allcontentwidth});
rotate = function()
    {
        var slideid = $active.attr("rel") - 1;
        var slidedistance = slideid * contentwidth;
        $(".slider_nav a").removeClass('active');
        $active.addClass('active');
        $(".contentslider").animate({
                left: -slidedistance
            }, 500 );
    };
 
rotation = function()
    {
        play = setInterval(function()
            {
                $active = $('.slider_nav a.active').next();
                if ( $active.length === 0)
                    {
                        $active = $('.slider_nav a:first');
                    }
                    rotate();
            }, 5000);
    };
 
rotation();
 
Попробуйте добавить проверку на активность окошка, адаптировав под свой код следующий пример:
Код:
было:
setInterval(function(){
        $('#slide').animate({
            left:$(this).attr('left')
        });
}, 5000);
стало:
setInterval(function(){
    if( !$('#slide').data('animated') ){
        $('#slide').data('animated', true);
        $('#slide').animate({
            left:$(this).attr('left')
        }, function(){
            $('#slide').data('animated', false);
        });
    }
}, 5000);
 
Думаю, используя библиотеку jquery (для тех же куков), логичнее использовать стандартные jquery методы:
$(window).blur(function() {
// Вкладка не активна
});

$(window).focus(function() {
// Вкладка активна
});
 
Назад
Сверху