Функция «Назад» в Safari на iOS (iPhone 8, последняя версия iOS) работает нестабильно: при переходе из списка тем в тему она часто не возвращает вас на правильное место в списке тем. На моём собственном форуме это происходит практически всегда. На Meta это иногда работает, но чаще — нет. Проблема возникает как при нажатии кнопки «Назад», так и при свайпе вправо.
Из любопытства, работает ли это в безопасном режиме?
Извините, я забыл упомянуть об этом: я протестировал безопасный режим как на своём форуме, так и здесь, на Meta, и получил тот же результат.
В приложении iOS Hub или в нативном Safari на мобильном? Я не могу воспроизвести проблему с кнопкой «Назад» или свайпом назад из списка тем здесь, на Meta.
Есть ли у вас конкретные шаги для воспроизведения?
О, подождите, я могу воспроизвести проблему со свайпом назад, но не с кнопкой «Назад». При свайпе назад, похоже, не сохраняется текущая позиция прокрутки в списке тем, тогда как кнопка «Назад» всегда её сохраняет.
В нативном Safari для мобильных устройств. Сначала я подумал, что проблема связана с обновлением списка тем, но, похоже, это не так. У меня это происходит 100% случаев на Meta.
Шаги для воспроизведения:
- Войдите в Meta
- Перезагрузите главную страницу Meta (этот шаг, кажется, не обязателен, но я хотел исключить проблему с обновлением списка тем)
- Прокрутите вниз на одну страницу
- Выберите тему
- Проведите вправо или нажмите «Назад»
Я также попробовал следующее, и результат был тем же:
- Отключил блокировщик рекламы Crystal в настройках блокировки контента.
- Открыл Meta в приватной вкладке без входа в аккаунт.
- Протестировал на iPhone SE.
- Протестировал в Chrome на Galaxy S6.
У меня это действительно воспроизводится @eviltrout.. возможно, мы допустили регрессию здесь? @j.jaffeux?
Это должно исправить проблему:
Подробности в сообщении коммита. Подожду одобрения от Робина перед слиянием на следующей неделе. Спасибо за подробный отчёт ![]()
Это слито, пожалуйста, дайте знать, как всё прошло.
Эта тема была автоматически закрыта через 3 дня после последнего ответа. Новые ответы больше не принимаются.
После обсуждения с @bartv я провёл дополнительное расследование и обнаружил, что регрессия действительно имеет место.
Я считаю, что проблема возникла из-за:
По сути, в данном случае scrollOnLoad не определён:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/components/topic-list.js.es6#L71
Предлагаю следующее исправление:
Можете ли вы, @markvanlan, проверить это на следующей неделе?
@bartv Я только что объединил второе исправление. Дайте знать, как всё получится, когда у вас будет время.
Кстати, интересно, нельзя ли улучшить эту логику ещё больше? В данный момент при каждом прокручивании страницы сохраняется позиция одного топика, но особенно на мобильных устройствах это может означать, что когда вы вернётесь, выбранный вами топик окажется вне области видимости, даже если он находится совсем рядом.
Я только что проверил здесь на Meta, но у меня это не работает — когда я нажимаю «назад» из темы, меня возвращает в начало списка тем.
И +1 за возврат к точной позиции в списке тем.
У меня это работает. Пожалуйста, снимите видео, когда у вас будет время.
Я добавил это в свой пост. Надеюсь, это поможет. Дайте знать, если нужно включить что-то ещё.
То, что показано в видео, ожидаемо: вы не прокрутили страницу, то есть не загрузили больше тем, поэтому позиция последней просмотренной темы не обновилась.
Именно это предлагал улучшить мой сноска.
Ага, могу подтвердить, что это ДЕЙСТВИТЕЛЬНО работает, если прокрутить страницу достаточно далеко, чтобы загрузились новые темы. Я не ожидал такого ограничения — для пользователя это немного сбивает с толку и выглядит непоследовательно.
Да, мне тоже это не очень нравится, поэтому я предложил улучшить это. Но, насколько я знаю, это не регрессия, в отличие от других исправлений, которые я сделал.
Чёрт, действительно, в этом коммите появилась ещё одна регрессия, и я думаю, что это должно её исправить:
и вернуть то поведение, о котором мы говорили!