Вопрос

У меня есть код jQuery, который непрерывно движется вверх и вниз, содержащий список с логотипами. Анимация повторяется в пределах установленного интервала и, похоже, работает, как и ожидалось, в Chrome, Firefox и IE 9 и 8 (без ошибок консоли).

Однако в IE7 я получаю «ошибку скрипта», и браузер полностью замораживает ... Я думаю, что SetInterval и ClearInterval не работают должным образом, или я испортил свой код ...

Вот:

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

Есть идеи или предложения как что -то не так? Заранее спасибо! Вик

Это было полезно?

Решение

Поскольку вы установили свой интервал на в яблочко Сумма двух анимаций (190000 = 95000 * 2), я не удивлюсь, если бы интервальная функция снова была запущена до завершения анимации, возможно, заставив что -то наступить на что -то еще. Это легко проверить: просто установите свой интервал на 300000 или что -то в этом роде и посмотрите, уходит ли проблема.

Чтобы избежать возможности снова расстрела в результате setInterval (что почти всегда больше проблем, чем стоит), я бы посмотрел, если jScrollPane предлагает вам обратный вызов, когда анимация завершена. Если это так, используйте этот обратный вызов завершения, чтобы вызвать следующую анимацию. Если это не так, я бы, вероятно, хотел бы добавить это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top