Com licença pela minha falta de conhecimento no assunto, mas como o Discourse lida com o clique no link do menu hambúrguer?
Contexto: Estou usando o serviço prerender.io para servir uma versão HTML do site principal (versão JS do site)
O link do hambúrguer <s class="text-muted">menu</s> não funciona.
<s>Você pode testar ( [o site](https://discuss.flynumber.com/) ) usando as ferramentas de desenvolvedor do Chrome e alterando o agente para Googlebot smartphone. Ao usar o agente de usuário do Googlebot, você está efetivamente obtendo a versão HTML pré-renderizada.</s>
Nota: De acordo com este post do blog do prerender, ele pode ter problemas com código como
Todos os links precisam estar entre tags <a></a> e definir um URL de destino no atributo href para que o Google possa encontrá-lo e segui-lo.
Talvez o link do menu principal seja gerado usando este método?
Qualquer ideia de solução seria muito apreciada.
Editar Removi o site do prerender por enquanto (mas mantendo a versão JS servida para bots) - Surpreendentemente, o Google bot parece renderizá-lo corretamente de vez em quando. Também não tenho problemas de menu ao usar o Google bot como agente de usuário no Chrome. Vou testar isso por um tempo.
Peço desculpas, eu tornei uma pergunta simples bastante confusa…
Os links dentro do menu parecem bons, meu problema é apenas o link do próprio hambúrguer - quando renderizado com prerender, ele simplesmente não abre.
O menu é anexado ao documento com Javascript quando o botão é clicado, portanto, não será facilmente convertido para funcionar em uma versão do site apenas com HTML.
Aqui é onde o botão é adicionado, você pode ver que ele tem uma ação chamada toggleHamburger:
toggleHamburger altera o estado hamburgerVisible, então o menu é finalmente adicionado com panels.push(this.attach("hamburger-menu")); que você pode ver aqui:
Resposta de qualidade @awesomerobot, tenho certeza que a comunidade aprecia.
Vou analisar isso para ver se o trabalho personalizado vale a pena.
A resposta que recebi do prerender.io foi basicamente que, se usar “JS complicado”, provavelmente não funcionará. Não tenho certeza de quão bem eles estudaram a situação.