Question

J'ai un code jquery qui se déplace vers le haut et vers le bas en continu un div contenant une liste avec des logos. L'animation se répète dans un intervalle de consigne et est tout semble fonctionner comme prévu dans Chrome, FireFox et IE 9 et 8 (pas d'erreur de la console).

Cependant, dans IE7 j'obtenir « erreur de script » et le navigateur se bloque totalement ... Je pense que le setInterval et clearInterval ne fonctionnent pas correctement ou j'ai foiré mon code ...

Ici, il est:

//<!------------------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);
  }
}

Toutes les idées ou suggestions que ce qui est faux? Merci d'avance! Vik

Était-ce utile?

La solution

Puisque vous avez défini votre intervalle exactement la somme des deux animations (190000 = 95000 * 2), je ne serais pas surpris si la fonction d'intervalle était tiré à nouveau avant que l'animation terminé, ce qui peut-être quelque chose à pas sur autre chose. Il est facile de vérifier. Il suffit de régler votre intervalle ou quelque chose et 300000 voir si le problème disparaît

Pour éviter la possibilité d'avoir le feu intervalle encore trop tôt, plutôt que d'utiliser setInterval (ce qui est presque toujours plus de mal que ça vaut le coup), je vois si jScrollPane vous offre un de rappel d'achèvement lorsque l'animation est terminée. Dans le cas contraire, utilisez-le rappel d'achèvement pour déclencher l'animation suivante. Si elle ne le fait pas, je chercherais probablement ajouter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top