iOS: кнопка «назад» перемещает в неправильное место в списке тем

Функция «Назад» в Safari на iOS (iPhone 8, последняя версия iOS) работает нестабильно: при переходе из списка тем в тему она часто не возвращает вас на правильное место в списке тем. На моём собственном форуме это происходит практически всегда. На Meta это иногда работает, но чаще — нет. Проблема возникает как при нажатии кнопки «Назад», так и при свайпе вправо.

4 лайка

Из любопытства, работает ли это в безопасном режиме?

3 лайка

Извините, я забыл упомянуть об этом: я протестировал безопасный режим как на своём форуме, так и здесь, на Meta, и получил тот же результат.

1 лайк

В приложении iOS Hub или в нативном Safari на мобильном? Я не могу воспроизвести проблему с кнопкой «Назад» или свайпом назад из списка тем здесь, на Meta.

Есть ли у вас конкретные шаги для воспроизведения?

О, подождите, я могу воспроизвести проблему со свайпом назад, но не с кнопкой «Назад». При свайпе назад, похоже, не сохраняется текущая позиция прокрутки в списке тем, тогда как кнопка «Назад» всегда её сохраняет.

4 лайка

В нативном Safari для мобильных устройств. Сначала я подумал, что проблема связана с обновлением списка тем, но, похоже, это не так. У меня это происходит 100% случаев на Meta.

Шаги для воспроизведения:

  • Войдите в Meta
  • Перезагрузите главную страницу Meta (этот шаг, кажется, не обязателен, но я хотел исключить проблему с обновлением списка тем)
  • Прокрутите вниз на одну страницу
  • Выберите тему
  • Проведите вправо или нажмите «Назад»

Я также попробовал следующее, и результат был тем же:

  • Отключил блокировщик рекламы Crystal в настройках блокировки контента.
  • Открыл Meta в приватной вкладке без входа в аккаунт.
  • Протестировал на iPhone SE.
  • Протестировал в Chrome на Galaxy S6.
5 лайков

У меня это действительно воспроизводится @eviltrout.. возможно, мы допустили регрессию здесь? @j.jaffeux?

6 лайков

Это должно исправить проблему:

Подробности в сообщении коммита. Подожду одобрения от Робина перед слиянием на следующей неделе. Спасибо за подробный отчёт :+1:

11 лайков

Это слито, пожалуйста, дайте знать, как всё прошло.

6 лайков

Эта тема была автоматически закрыта через 3 дня после последнего ответа. Новые ответы больше не принимаются.

После обсуждения с @bartv я провёл дополнительное расследование и обнаружил, что регрессия действительно имеет место.

Я считаю, что проблема возникла из-за:

По сути, в данном случае scrollOnLoad не определён:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/components/topic-list.js.es6#L71

Предлагаю следующее исправление:

Можете ли вы, @markvanlan, проверить это на следующей неделе?

10 лайков

@bartv Я только что объединил второе исправление. Дайте знать, как всё получится, когда у вас будет время.

Кстати, интересно, нельзя ли улучшить эту логику ещё больше? В данный момент при каждом прокручивании страницы сохраняется позиция одного топика, но особенно на мобильных устройствах это может означать, что когда вы вернётесь, выбранный вами топик окажется вне области видимости, даже если он находится совсем рядом.

5 лайков

Я только что проверил здесь на Meta, но у меня это не работает — когда я нажимаю «назад» из темы, меня возвращает в начало списка тем.

И +1 за возврат к точной позиции в списке тем.

У меня это работает. Пожалуйста, снимите видео, когда у вас будет время.

2 лайка

Я добавил это в свой пост. Надеюсь, это поможет. Дайте знать, если нужно включить что-то ещё.

1 лайк

То, что показано в видео, ожидаемо: вы не прокрутили страницу, то есть не загрузили больше тем, поэтому позиция последней просмотренной темы не обновилась.

Именно это предлагал улучшить мой сноска.

3 лайка

Ага, могу подтвердить, что это ДЕЙСТВИТЕЛЬНО работает, если прокрутить страницу достаточно далеко, чтобы загрузились новые темы. Я не ожидал такого ограничения — для пользователя это немного сбивает с толку и выглядит непоследовательно.

1 лайк

Да, мне тоже это не очень нравится, поэтому я предложил улучшить это. Но, насколько я знаю, это не регрессия, в отличие от других исправлений, которые я сделал.

4 лайка

Чёрт, действительно, в этом коммите появилась ещё одна регрессия, и я думаю, что это должно её исправить:

и вернуть то поведение, о котором мы говорили!

6 лайков