У меня есть код, использующий метод jQuery scrollTop(0)
, который не работает корректно в Chrome (версия 56.0.2924.87).jQuery прокрутите вверх до замораживания, если вызвана средняя прокрутка
Мой код задает 2 второй тайм-аут, который делает следующее:
- Scrolls в верхней части экрана.
- Скрывает div, который имеет ширину и высоту 100% и просит пользователя выполнить какое-либо действие.
- Добавляет класс в тег html, который устанавливает
overflow: hidden
. - Как только пользователи завершат действие, он удалит класс и скроет div, чтобы продолжить прокрутку.
Это работает с релейлистами в Firefox.
В Chrome, если 2-секундный тайм-аут выполняется, когда пользователь не прокрутки, то он работает так, как ожидалось. Однако, если 2-секундный тайм-аут вызывается, когда пользователь находится в середине прокрутки, он, кажется, замерзает.
Я создал this Plunker, содержащий весь код. Проблема не возникает, если вы тестируете внутри встроенного демонстрационного окна, вам нужно нажать «Предварительный просмотр» в отдельном окне (синяя кнопка вверху справа в демо-версии кода).
В моем демо, это то, что произойдет, если тайм-аут работает в то время как я не активно прокрутки:
И это то, что произойдет, если тайм-аут выполняется в то время как я прокрутки вниз (mid-scroll):
Как я могу сделать эту работу надежно на Chrome, даже если пользователь в данный момент прокручивает страницу?