Frage

Ich habe einen JQuery -Code, der sich kontinuierlich auf und ab bewegt und eine DIV mit Logos enthält. Die Animation wiederholt sich innerhalb eines festgelegten Intervalls und scheint alle wie erwartet in Chrome, Firefox und IE 9 und 8 zu funktionieren (keine Konsolenfehler).

In IE7 erhalte ich jedoch "Skript -Fehler" und der Browser friert total ein ... Ich denke, das SetInterval und ClearInterval funktionieren nicht ordnungsgemäß oder ich habe meinen Code durcheinander gebracht ...

Hier ist es:

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

Irgendwelche Ideen oder Vorschläge als was ist falsch? Danke im Voraus! Vik

War es hilfreich?

Lösung

Da Sie Ihr Intervall festgelegt haben exakt Die Summe der beiden Animationen (190000 = 95000 * 2), ich wäre nicht überrascht, wenn die Intervallfunktion erneut abgefeuert wird, bevor die Animation abgeschlossen ist, und möglicherweise dazu führen, dass etwas auf etwas anderes tritt. Es ist leicht zu überprüfen: Stellen Sie einfach Ihr Intervall auf 300000 oder so ein und sehen Sie, ob das Problem verschwindet.

Um die Möglichkeit zu vermeiden, das Intervallfeuer zu früh wieder zu haben, anstatt zu verwenden setInterval (Was fast immer mehr Ärger ist als es wert ist), würde ich sehen, ob jScrollPane Bietet Ihnen einen Abschluss -Rückruf, wenn die Animation abgeschlossen ist. Wenn dies der Fall ist, verwenden Sie diesen Completion -Rückruf, um die nächste Animation auszulösen. Wenn dies nicht der Fall ist, würde ich wahrscheinlich versuchen, es hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top