Les ancres/hashtags sont supprimées des URLs sur mobile. Comment l'empêcher ?

Lorsque je clique sur un lien avec une ancre sur ordinateur, la page défile jusqu’à cet endroit. Cependant, sur mobile (Android, FF et Chrome), l’ancre est supprimée de l’URL, donc il n’y a pas de défilement vers cet endroit.

Ce que j’essaie de faire :

Nous avons un long document de directives et de FAQ qui doit lier des titres. Comme Discourse supprime les paramètres id, j’ai créé un composant de thème simple qui utilise des attributs de données personnalisés dans le document cible et écoute les ancres dans l’URL pour faire défiler vers l’élément avec l’attribut de données correspondant.

Ça fonctionne sur ordinateur !

Cependant, sur mobile, les ancres semblent être supprimées, de sorte que lorsque vous arrivez sur la page cible, il n’y a pas de défilement vers le bon élément. Et bien sûr, avec un long document, c’est sur mobile que vous avez le plus besoin de cette navigation.

Je constate que les ancres générées par le composant Table des matières fonctionnent lorsque vous les ouvrez dans un nouveau lien. Elles ne sont pas supprimées de l’URL et le navigateur défile vers le bon endroit.

Comment puis-je faire fonctionner cela ?

Petite mise à jour…

Quelqu’un a suggéré d’utiliser des paramètres de requête à la place. Ceux-ci ne semblent pas être supprimés sur mobile. Mais incroyablement, ils le sont sur desktop.

Voici quelques publications connexes, bien qu’elles ne traitent pas spécifiquement du problème des URLs qui sont supprimées…

Je n’utilise pas Android, donc je ne peux pas tester cela, mais j’ai utilisé les liens vers les titres à maintes reprises et ils fonctionnent parfaitement sur mon iPhone. Je me demande pourquoi vous utilisez des ancres d’ID au lieu de simplement lier au titre souhaité ?

Par exemple, cela fonctionne-t-il pour vous ? Configuration Cloudflare R2

Pouvez-vous donner un exemple de ce à quoi ressemble votre lien d’ancrage ? Peut-être que je ne comprends pas ce que vous essayez d’accomplir.

Parce que ces liens vers les en-têtes sont extrêmement fragiles. Voici à quoi ressemble celui que vous avez fourni :

https://meta.discourse.org/t/-/148916#p-738234-cloudflare-r2-13

Vous voyez ce -13 à la fin ? Il est présent car il s’agit du treizième en-tête. Dès que vous ajoutez un nouvel en-tête plus haut dans le document, le lien est cassé. Et bien sûr, si vous modifiez le texte de l’en-tête, le lien est également cassé.

Quand je dis « cassé », je fais référence aux modifications apportées au document cible. D’après ce que je comprends, ces ancres sont générées dynamiquement lors du chargement de la page. Ainsi, si vous utilisez le plugin SOMMAIRE, modifier le document ne pose pas de problème.

Dans notre cas d’utilisation, il s’agit d’une FAQ vers laquelle on renvoie. Il n’est donc pas rare d’ajouter de nouvelles questions/en-têtes.

Mais vous avez raison de dire que Discourse semble détecter le motif de ces ancres et les autoriser. Cependant, si le motif ne correspond pas à ce qui est attendu, l’ancre est supprimée.

Ce ne sont que des identifiants alphanumériques ordinaires. Ainsi, si je voulais créer une ancre pour votre exemple ci-dessus, j’utiliserais simplement cloudflare-r2.