mrKorg
@mrKorg
web developer

Почему не работает прокрутка страницы window.scrollTo?

Есть такой код
// Open sidebar
    (function () {
        let menuBtn = document.getElementById('header__menuBtn'),
            html = document.querySelector('html');

        menuBtn.onclick = () => {
            if (html.classList.contains('oper-sidebar')) {
                unlockScroll();
            } else {
                lockScroll();
            }
        };
        function lockScroll() {
            // lock scroll position, but retain settings for later
            let scrollPosition = [
                    self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
                    self.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop
                ];
            window.scrollPosition = scrollPosition;
            window.previousOverflow = window.getComputedStyle(html).getPropertyValue('overflow');
            html.classList.add('oper-sidebar');
            html.style.overflow = 'hidden';
            window.scrollTo(scrollPosition[0], scrollPosition[1]);
        }
        function unlockScroll() {
            // un-lock scroll position
            html.style.overflow = window.previousOverflow;
            window.scrollTo(window.scrollPosition[0], window.scrollPosition[1]);
            html.classList.remove('oper-sidebar');
        }
    }());

При клике на кнопку "запоминает" положение страницы, отключает прокрутку и наоборот - включает прокрутку и прокручивает на то место, где страница была до клика.
Но почему-то window.scrollTo не прокручивает страницу. Аналогичный вариант на jquery работает.
  • Вопрос задан
  • 528 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы