В файле responsive.js
есть вызов скролла, так вот скролл выполняется всегда, вне зависимости от передаваемого значение opt.need_scroll
. На скрине видно (http://94.130.79.130/inj/20190820-154445-qRW1PE7t1r.png), что на вход поступил opt.need_scroll = false
и скролл все равно выполнится. Прошу поправить код в самом ядре, с проверкой if (opt.need_scroll) { ..... }
.
Спасибо за информацию. Мы передали ее разработчикам для изучения.
Здравствуйте.
В responsive.js:
opt.need_scroll = false;
setTimeout(function() {
$.scrollToElm(opt.jelm.data('caScroll'));
}, 310);
т.е. скролл не просто отменяется, он откладывается на 310мс.
Почему не нужно делать скролл?
Все правильно, скролл делать нужно! Только при условии, что opt. needd_scroll = true
. На скрине я показал, что в функцию передаётся false, и скролл тоже отработает
Этот код навешивается через on при ините tabs. Если на странице есть несколько отдельных блоков с вкладками, то код навешивается несколько раз (3,4,5…). В результате, при одном тригере скрола событие срабатывает то самое количество раз и создается столько же таймеров со скролом.
Итого, 4 блока с вкладками, 4 инита needScroll, и по любому клику 4 последовательных скролла до одной и той же точки на экране, каждая по 310мс, в сумме 1,2 сек “застрявания” экрана. При этом на первом скроле opt.need_scroll равен true, а остальные, соотвенно уже false, но скрол это не останавливает. Вы добавляете правильное свойство, но не отслеживаете его значение. Зачем скроллить при opt.need_scroll == false?
Здравствуйте!
Мы исправили проблему с навешиванием нескольких событий ce.needScroll
.
Так же стало возможно отменять скролл с помощью параметра opt.need_scroll = false
.
Исправление войдет в CS-Cart 4.10.5.
Если вы хотите внести исправления, не дожидаясь выхода следующей версии, воспользуйтесь diff-файлом https://gist.github.com/csavoronin/c7b2dd8cd77e769ddd7a1a8e46bd3ab0
Вот инструкция, как воспользоваться этим файлом:
https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html