Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ale_Donnert

setTimeout() acumulando

Recommended Posts

Opa, estou enfrentando um problema, o settimeout() do slider do site em que estou trabalhando está acumulando e eu não estou conseguindo limpar o cache, tentei isto:


Response.CacheControl = "Private"
Response.Expires = 0
Response.AddHeader("cache-control", "no-store, must-revalidate, private")
Response.AddHeader("Pragma", "no-cache")

no VB, mas não funcionou.

 

Quando eu minimizo a janela com o site aberto, ao reabrir o mesmo, ele executa o slider, que tem settimeout de 10 segundos, de maneira acumulada, mostrando todos os 10 segundos que passaram até terminar, está acumulando no chace.

 

Alguem tem idéia do que fazer neste caso?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc ta confundindo as coisas... setTimeout não gera cache não.

 

o seu problema pelo visto é pela recursividade.

 

 

a função clerTimeout(), libera o espaço de memória e para a instrução disparada pelo setTimeout(), mas vc precisa fornecer mais detalhes do teu codigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui vai a função para o slider:



// JavaScript Document
/*!
 *
 * Copyright 2013, Alexandre Magalhães
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 */
        $(document).ready(function() {
            var currentPosition = 0;
            var slideWidth = 990;
            var slides = $('.slide');
            var numberOfSlides = slides.length;
            var tout; //vou usar no auto banner
            var time = 9000; //vou usar no auto banner


            // Remove scrollbar in JS
            $('#slidesContainer').css('overflow', 'hidden');

            // Wrap all .slides with #slideInner div
            slides
    .wrapAll('<div id="slideInner"></div>')
            // Float left to display horizontally, readjust .slides width
.css({
   'float': 'left',
   'width': slideWidth
});

            // Set #slideInner width equal to total width of all slides
            $('#slideInner').css('width', slideWidth * numberOfSlides);

            // Insert controls in the DOM
            $('.slideshow')
  .append('<span class="controlFundo" id="leftBack">Clicking moves left</span>')
.append('<span class="controlFundo" id="rightBack">Clicking moves left</span>')
  .append('<span class="slideshow"></span>')
    .append('<span class="control" id="leftControl">Clicking moves left</span>')
.append('<span class="control" id="rightControl">Clicking moves right</span>');

            // Hide left arrow control on first load
            manageControls(currentPosition);

            // Create event listeners for .controls clicks
            $('.control')
    .bind('click', function() {
        clearTimeout(tout);
        // Determine new position
        currentPosition = ($(this).attr('id') == 'rightControl') ? currentPosition + 1 : currentPosition - 1;

        // Hide / show controls
        manageControls(currentPosition);
        // Move slideInner using margin-left
        $('#slideInner').animate({
            'marginLeft': slideWidth * (-currentPosition)
        });
        tout = setTimeout(walk, time); // depois de limpar o tempo, eu inicializo o auto banner d novo
    });


            $(document).ready(function() {
                tout = setTimeout(walk, time);               // tout = setTimeout('animate()', 5000);
            });
            function walk() {
                if ((slides.length - 1) > currentPosition) {
                    currentPosition = currentPosition + 1;
                } else {
                    currentPosition = 0;
                }
                $('#slideInner').animate({
                    'marginLeft': 990 * (-currentPosition)
                });
                manageControls(currentPosition);
                tout = setTimeout(walk, time);
            }


            // manageControls: Hides and Shows controls depending on currentPosition - Botão esquerda e botão direita
            function manageControls(position) {
                // Hide left arrow if position is first slide
                if (position == 0) { $('#leftControl').hide() } else { $('#leftControl').show() }
                // Hide right arrow if position is last slide
                if (position == numberOfSlides - 1) { $('#rightControl').hide() } else { $('#rightControl').show() }
            }
        });

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse teu caso, era melhor q vc usasse um setInterval()

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.