Domanda

Ho un codice jQuery che si muove su e giù in continuazione un div contenente un elenco con i loghi. L'animazione ripete a intervalli predefiniti ed è tutto sembra funzionare come previsto in Chrome, FireFox e IE 9 e 8 (nessun errore console).

Tuttavia in IE7 ottengo 'errore di script' e il browser si blocca completamente ... Penso che la setInterval e clearInterval non funzionano correttamente o che ho incasinato il mio codice ...

Qui è:

//<!------------------LOGOS ------------------>

// the automatic scroll start immediately
$(document).ready(function () { membersLogos() });

// set the interval after which to restart the animated scroll
$(function () {

  var intervalID;
  var resetTimer = function () {
    if (intervalID) { clearInterval(intervalID) };
    intervalID = setInterval(function () {
        membersLogos();
    }, 190000);
  };

});

// set the interval after which to restart the animated scroll

function membersLogos() {
  var pane = $('#mypane');

  if ($('#mypane').length) {
    pane.jScrollPane({
        animateScroll: true, //added
        animateDuration: 95000, //added - length each way in milliseconds
        stickToTop: true,
        //autoReinitialise: true,
        enableKeyboardNavigation: true
    });

    var api = pane.data('jsp');
    var logosHeight = parseInt($('#mypane .jspPane').height());

    //listen to the x-axis scrolling event
    pane.bind('jsp-scroll-y', function (event, pos_y, at_top, at_bottom) {
        //we're at the bottom now lets scroll back to the top
        if (at_bottom) {
            api.scrollToY(0);
            $(this).unbind(event); //added with edit
            $(this).bind('jsp-scroll-y', function (event, pos_y, at_top, at_bottom) {
                if (at_top) {
                    $(this).unbind(event);
                    api.scrollToY(logosHeight);
                }

            });

        }

    });

    //initial animate scroll to the top
    api.scrollToY(logosHeight);
  }
}

Tutte le idee o suggerimenti quanto ciò che è sbagliato? Grazie in anticipo! Vik

È stato utile?

Soluzione

Dal momento che hai impostato l'intervallo di esattamente la somma dei due animazioni (190000 = 95000 * 2), io non sarei sorpreso se la funzione intervallo era stato licenziato di nuovo prima che l'animazione completato, forse provocando qualcosa a passo su qualcos'altro. E 'facilmente controllato:. Basta impostare l'intervallo di 300000 o qualcosa e vedere se il problema si risolve

Per evitare la possibilità di avere il fuoco intervallo di nuovo troppo presto, invece di usare setInterval (che è quasi sempre più problemi che ne vale la pena), mi piacerebbe vedere se jScrollPane consente un callback di completamento quando l'animazione è completa. Se lo fa, l'uso che callback di completamento per attivare l'animazione successiva. Se non lo fa, probabilmente sarei guardo per aggiungerlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top