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.
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.
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é ?
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.