Темы перескакивают на неправильный пост

Большое спасибо за чёткие шаги по воспроизведению проблемы @Don :pray:

Да, именно так! Здесь одновременно происходит две вещи:

  1. Служба ползунка загрузки должна удалить класс still-loading из тега body.
  2. LockOn должен прокрутить страницу к нужному месту.

Обе задачи были запланированы в части afterRender цикла выполнения Ember. Поскольку код «зафиксировать на» технически был запланирован первым, он выполнялся первым. В результате LockOn запускался, когда весь HTML постов уже был в DOM, но всё ещё имел свойство display: none. :grimacing:

Этот PR переместит удаление класса still-loading в часть «render» цикла выполнения. Это означает, что любой другой код, запланированный afterRender, будет выполняться только после того, как всё будет отрисовано и станет видимым:

Согласен! Я не хотел трогать его в рамках этого исправления ошибки, но думаю, нам стоит стремиться убрать все подобные костыли.

Судя по комментариям в файле, он был изначально добавлен (10 лет назад!) для противодействия функциям «восстановления прокрутки» браузеров. В наши дни мы используем history.scrollRestoration = false, чтобы отключить эту функцию браузера, поэтому, думаю, это делает большинство старых костылей избыточными.

Вероятно, лучше сначала протестировать такие чувствительные изменения через компонент темы, а если всё будет хорошо, затем объединить их с основным кодом. Я полагаю, что удаление LockOn исправит множество других пограничных случаев, связанных с позицией прокрутки темы. Постараюсь проверить это в ближайшие пару недель :technologist:

7 лайков