Баг js-функции скроллера


#1

В файле responsive.js есть вызов скролла, так вот скролл выполняется всегда, вне зависимости от передаваемого значение opt.need_scroll. На скрине видно (http://94.130.79.130/inj/20190820-154445-qRW1PE7t1r.png), что на вход поступил opt.need_scroll = false и скролл все равно выполнится. Прошу поправить код в самом ядре, с проверкой if (opt.need_scroll) { ..... }.


#2

Спасибо за информацию. Мы передали ее разработчикам для изучения.


#3

Здравствуйте.

В responsive.js:

                    opt.need_scroll = false;
                    setTimeout(function() {
                        $.scrollToElm(opt.jelm.data('caScroll'));
                    }, 310);

т.е. скролл не просто отменяется, он откладывается на 310мс.
Почему не нужно делать скролл?


#4

Все правильно, скролл делать нужно! Только при условии, что opt. needd_scroll = true. На скрине я показал, что в функцию передаётся false, и скролл тоже отработает


#5

Этот код навешивается через on при ините tabs. Если на странице есть несколько отдельных блоков с вкладками, то код навешивается несколько раз (3,4,5…). В результате, при одном тригере скрола событие срабатывает то самое количество раз и создается столько же таймеров со скролом.

Итого, 4 блока с вкладками, 4 инита needScroll, и по любому клику 4 последовательных скролла до одной и той же точки на экране, каждая по 310мс, в сумме 1,2 сек “застрявания” экрана. При этом на первом скроле opt.need_scroll равен true, а остальные, соотвенно уже false, но скрол это не останавливает. Вы добавляете правильное свойство, но не отслеживаете его значение. Зачем скроллить при opt.need_scroll == false?