Большое спасибо за чёткие шаги по воспроизведению проблемы @Don ![]()
Да, именно так! Здесь одновременно происходит две вещи:
- Служба ползунка загрузки должна удалить класс
still-loadingиз тега body. - LockOn должен прокрутить страницу к нужному месту.
Обе задачи были запланированы в части afterRender цикла выполнения Ember. Поскольку код «зафиксировать на» технически был запланирован первым, он выполнялся первым. В результате LockOn запускался, когда весь HTML постов уже был в DOM, но всё ещё имел свойство display: none. ![]()
Этот PR переместит удаление класса still-loading в часть «render» цикла выполнения. Это означает, что любой другой код, запланированный afterRender, будет выполняться только после того, как всё будет отрисовано и станет видимым:
Согласен! Я не хотел трогать его в рамках этого исправления ошибки, но думаю, нам стоит стремиться убрать все подобные костыли.
Судя по комментариям в файле, он был изначально добавлен (10 лет назад!) для противодействия функциям «восстановления прокрутки» браузеров. В наши дни мы используем history.scrollRestoration = false, чтобы отключить эту функцию браузера, поэтому, думаю, это делает большинство старых костылей избыточными.
Вероятно, лучше сначала протестировать такие чувствительные изменения через компонент темы, а если всё будет хорошо, затем объединить их с основным кодом. Я полагаю, что удаление LockOn исправит множество других пограничных случаев, связанных с позицией прокрутки темы. Постараюсь проверить это в ближайшие пару недель ![]()