The ‘back’ function in Safari/iOS (iPhone 8, latest iOS version) is unreliable; when going from the topic list to a topic, it will often not take you back to the correct position in the topic list. On my own forum this happens pretty much always. On Meta, it sometimes works for me, but more often it doesn’t. This happens both when clicking the ‘back’ button and when swiping to the right.
Out of curiosity does it work in safe mode ?
Sorry I forgot to mention that: I tested safe mode both on my own forum and here on Meta with the same result.
In the iOS hub app or in native mobile safari? I can’t repro any problem using the back button or back swipe from the topic list here on meta.
Do you have specific repro steps?
Oh wait, I can repro for back swipe, but not back button. Back swipe doesn’t seem to remember the actual scroll position in the topic list, but back button always does.
In native mobile safari. At first I had a hunch it was related to the topic list refreshing, but that doesn’t seem to be the case. It happens 100% of the time for me on Meta now.
Repro steps:
- Log in to Meta
- Reload the Meta homepage (this step doesn’t seem necessary but I wanted to rule out the topic list refresh issue)
- Scroll one page down
- Select a topic
- Swipe right or click back
I also tried the following, all with the same result:
- Disabled the Crystal ad blocker in content blocking.
- Opened Meta in a private tab without logging in.
- Tested on an iPhone SE.
- Tested in Chrome on a Galaxy S6
That does seem to repro for me @eviltrout … perhaps we regressed here? @j.jaffeux?
Cela devrait régler le problème :
Détails dans le message du commit. J’attends l’approbation de Robin avant de fusionner cette semaine prochaine. Merci pour le rapport détaillé ![]()
C’est fusionné, faites-moi savoir comment cela se passe, s’il vous plaît.
Ce sujet a été automatiquement fermé 3 jours après la dernière réponse. De nouvelles réponses ne sont plus autorisées.
Après une discussion avec @bartv, j’ai approfondi l’investigation et découvert qu’il y a effectivement une régression.
Je pense qu’elle provient de :
En gros, dans ce cas, scrollOnLoad est indéfini :
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/components/topic-list.js.es6#L71
Je suggère la correction suivante :
Peux-tu la relire la semaine prochaine, @markvanlan, s’il te plaît ?
@bartv J’ai tout juste fusionné la deuxième correction. N’hésite pas à me dire ce que tu en penses quand tu auras un moment.
Par ailleurs, je me demande si nous ne pourrions pas encore améliorer cette logique ? Actuellement, elle stocke la position d’un seul sujet à chaque défilement de page, mais cela peut signifier, surtout sur mobile, que lorsque tu reviens, le sujet sur lequel tu as cliqué n’est pas dans la zone visible, même s’il n’est pas très loin.
Je viens de tester cela sur Meta, mais cela ne fonctionne pas pour moi : lorsque j’appuie sur « retour » depuis un sujet, je reviens au début de la liste des sujets.
Et je suis tout à fait d’accord pour revenir à la position exacte dans la liste des sujets.
Ça fonctionne pour moi. S’il vous plaît, faites une vidéo quand vous avez le temps.
Je l’ai ajouté à mon message. J’espère que cela vous aidera. N’hésitez pas à me dire si vous avez besoin que j’inclue d’autres éléments.
Ce que la vidéo montre est attendu : vous n’avez pas effectué un « défilement de page », c’est-à-dire que plus de sujets n’ont pas été chargés, donc la position du dernier sujet consulté n’a pas été mise à jour.
C’est ce que ma note en marge proposait d’améliorer.
Ah, je peux confirmer que cela FONCTIONNE bel et bien lorsque je descends suffisamment pour forcer le chargement de nouveaux sujets. Je ne m’attendais pas à cette limitation — en tant qu’utilisateur, c’est un peu confus et incohérent.
Oui, je ne l’aime pas non plus vraiment, c’est pourquoi j’ai proposé de l’améliorer. Mais d’après ce que je sache, ce n’est pas une régression comme les autres problèmes que j’ai corrigés.
Putain, il y avait bien une autre régression à partir de ce commit, et je pense que cela devrait la résoudre :
et rétablir le comportement dont nous parlions !