Hoe wordt de hoofdmenu (hamburger) link/paneel gegenereerd?

Excuse my lack of expertise on the topic but how does Discourse handle the clicking of the hamburger menu link?

Context: I’m using the prerender.io service to serve an HTML version of the main (JS version of the site)

The menu hamburger link doesn’t work.

You can test ( the site ) by using the chrome dev tools and changing the agent to Googlebot smartphone. When using the googlebot user agent you’re in effect getting the HTML prerender version.

Side Note: According to this blog post from prerender , it could have issues with code like

`<a onclick=”goTo(‘page’)”>Anchor</a>`
`<a href=”javascript:goTo(‘page’)”>Anchor</a>`
`<span onclick=”goTo(‘page’)”>Anchor</span>`

All links need to be between tags and define a target URL within the href attribute for Google to be able to find and follow it.

Perhaps the main menu link is generated using this method?

Any ideas on a solution would be very much appreciated.

Edit I took the site off prerender for now ( but keeping JS version served to bots ) - Surprisingly google bot seems to render it correctly once in a while. I also have no menu issues when using the google bot as the user agent in chrome. Im going to test this for a little bit.

My apologies here, I made a simple question quite confusing …

The links within the menu seem fine, my issue is just the actual hamburger link itself - when rendered with prerender it just won’t open.

This post by @Johani was super helpful in trying to diagnose

Am I on the right track looking at this bit of code ( as far as the functionality for when you click the hamburger menu )

The menu is appended to the document with Javascript when the button is clicked, so it won’t easily be converted to work on an HTML-only version of the site.

Here’s where the button is added, you can see it has an action named toggleHamburger:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L246

The toggleHamburger action is defined later in the same file, here:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L483

toggleHamburger changes the hamburgerVisible state, so the menu is ultimately added with panels.push(this.attach("hamburger-menu")); which you can see here:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L379

Quality response @awesomerobot , I’m sure the community appreciates it.

I will look this over to see if custom work is worth it.

The response I got from prerender.io was basically if it uses “complicated JS” it probably wont work. Not sure how well they studied the situation though.