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

Тема в разделе "JavaScript", создана пользователем zsaz, 26 фев 2013.

Модераторы: ZiX
  1. zsaz

    zsaz

    Регистр.:
    6 авг 2007
    Сообщения:
    251
    Симпатии:
    11
    Подскажите пожалуйста.
    Вот тут есть слайдер. http://sibirteh.ru/ У него автопрокрутка стоит в 5 секунд (менять нельзя)
    Если оставить страницу открытой, а самому полазить по другим вкладкам некоторое время (может минуту, а может и меньше) и вернуться обратно на сайт, то слайдер начинает бешено бегать. Как это исправить?
     
  2. Edu-profit

    Edu-profit Постоялец

    Регистр.:
    18 ноя 2011
    Сообщения:
    121
    Симпатии:
    51
    Заметила очень крутую штуку, не знаю, поможет ли это Вам или нет. Слайды меняются каждые 5 секунд, если перейти на другую вкладку, положим, на 30 секунд, то возвращаясь на Ваш сайт слайды сменяются быстро ровно 6 раз (30 сек делить на 5) а потом опять нормальный темп. То есть они как бы наверстали упущенное, пока Вас не было. Это мне напоминает штуку о которой я слышала - скриптец для сайтов под рекламу, определяют, на этой ли вкладке сейчас находится пользователь, и если нет, то "замирают", чтобы не было в проплаченных слайдерах "холостых" показов рекламы. Извините, что все так в кучу) выразилась как сумела. Возможно, Вам это поможет в поисках корня проблемы.
     
    risk_plus нравится это.
  3. kinhead

    kinhead Создатель

    Регистр.:
    23 фев 2013
    Сообщения:
    40
    Симпатии:
    11
    Как это менять нельзя?
    Держи скрипт твоего слайдера с комментариями - посмотри что какие настройки значат, надеюсь разберешься.
     

    Вложения:

    • jcarousel.zip
      Размер файла:
      2,6 КБ
      Просмотров:
      6
  4. zsaz

    zsaz

    Регистр.:
    6 авг 2007
    Сообщения:
    251
    Симпатии:
    11
    А это не мой слайдер. У меня хоть в коде и подключен он, но не используется. Ниже представлен ВЕСЬ код слайдера
    Код:
    /* 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();
     
  5. kinhead

    kinhead Создатель

    Регистр.:
    23 фев 2013
    Сообщения:
    40
    Симпатии:
    11
    Попробуйте добавить проверку на активность окошка, адаптировав под свой код следующий пример:
    Код:
    было:
    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);
     
  6. Kotex

    Kotex Создатель

    Регистр.:
    23 апр 2012
    Сообщения:
    10
    Симпатии:
    3
    Думаю, используя библиотеку jquery (для тех же куков), логичнее использовать стандартные jquery методы:
    $(window).blur(function() {
    // Вкладка не активна
    });

    $(window).focus(function() {
    // Вкладка активна
    });