Excusez mon manque d’expertise sur le sujet, mais comment Discourse gère-t-il le clic sur le lien du menu hamburger ?
Contexte : J’utilise le service prerender.io pour servir une version HTML du site principal (version JS du site).
Le lien hamburger menu ne fonctionne pas.
Vous pouvez tester ( le site ) en utilisant les outils de développement Chrome et en changeant l’agent pour Googlebot smartphone. Lorsque vous utilisez l’agent utilisateur Googlebot, vous obtenez en effet la version HTML prerender.
Note annexe : Selon ce billet de blog de prerender, cela pourrait poser des problèmes avec du code comme
Tous les liens doivent être entre des balises <a></a> et définir une URL cible dans l’attribut href pour que Google puisse les trouver et les suivre.
Peut-être que le lien du menu principal est généré en utilisant cette méthode ?
Toutes les idées de solution seraient très appréciées.
Modification J’ai retiré le site de prerender pour l’instant (mais je garde la version JS servie aux bots) - Étonnamment, Google bot semble le rendre correctement de temps en temps. Je n’ai pas non plus de problèmes de menu lorsque j’utilise Google bot comme agent utilisateur dans Chrome. Je vais tester cela un peu.
Mes excuses, j’ai rendu une question simple assez confuse…
Les liens dans le menu semblent corrects, mon problème concerne uniquement le lien du bouton hamburger lui-même - lorsqu’il est rendu avec prerender, il ne s’ouvre tout simplement pas.
Ce post par @Johani a été très utile pour essayer de diagnostiquer.
Suis-je sur la bonne voie en regardant ce bout de code (en ce qui concerne la fonctionnalité lorsque vous cliquez sur le menu hamburger)
Le menu est ajouté au document avec Javascript lorsque le bouton est cliqué, il ne sera donc pas facilement converti pour fonctionner sur une version du site uniquement en HTML.
Voici où le bouton est ajouté, vous pouvez voir qu’il a une action nommée toggleHamburger :
toggleHamburger modifie l’état hamburgerVisible, de sorte que le menu est finalement ajouté avec panels.push(this.attach("hamburger-menu")); que vous pouvez voir ici :
Excellente réponse @awesomerobot, je suis sûr que la communauté l’apprécie.
Je vais examiner cela pour voir si un travail personnalisé en vaut la peine.
La réponse que j’ai obtenue de prerender.io était essentiellement que s’il utilise du « JS compliqué », cela ne fonctionnera probablement pas. Je ne suis pas sûr qu’ils aient bien étudié la situation.