主菜单(汉堡包)链接/面板是如何生成的?

抱歉,我对这个话题不太了解,但 Discourse 是如何处理点击汉堡菜单链接的?

背景: 我正在使用 prerender.io 服务来提供主站(网站的 JS 版本)的 HTML 版本。
菜单汉堡链接不起作用。
您可以通过使用 chrome 开发工具并将代理更改为 Googlebot smartphone 来测试(该网站)。当使用 Googlebot 用户代理时,您实际上会获得 HTML 预渲染版本。

题外话: 根据 prerender 的这篇博文,它可能会遇到类似以下的代码问题:

`<a>Anchor</a>`
`<a href="javascript:goTo('page')">Anchor</a>`
`<span onclick="goTo('page')">Anchor</span>`

所有链接都需要放在 <a></a> 标签之间,并在 href 属性中定义目标 URL,Google 才能找到并跟踪它。

也许主菜单链接是使用此方法生成的?

任何关于解决方案的想法都将非常感激。

编辑 我暂时将该网站从 prerender 中移除(但仍然为机器人提供 JS 版本)- 令人惊讶的是,Googlebot 有时似乎能正确渲染它。在使用 Chrome 中的 Googlebot 作为用户代理时,我也没有任何菜单问题。我将对此进行一段时间的测试。

抱歉,我把一个简单的问题弄得很复杂……

菜单中的链接似乎没问题,我的问题只是汉堡包链接本身——当使用预渲染器渲染时,它就是打不开。

@Johani这篇帖子在诊断问题时非常有帮助。

我是在正确的方向上吗?看看这段代码(关于点击汉堡包菜单时的功能)。

菜单在点击按钮时使用 Javascript 附加到文档中,因此很难将其转换为适用于纯 HTML 版本的网站。\n\n这是添加按钮的位置,您可以看到它有一个名为 toggleHamburger 的操作:\n\nhttps://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L246\n\n`toggleHamburger` 操作在同一文件稍后的位置定义,此处:\n\nhttps://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L483\n\n`toggleHamburger` 更改 hamburgerVisible 状态,因此菜单最终使用 panels.push(this.attach(\"hamburger-menu\")); 添加,您可以在此处看到:\n\nhttps://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/widgets/header.js#L379

1 个赞

@awesomerobot 的回复很棒,我相信社区会很感激。\n\n我会仔细研究一下,看看定制工作是否值得。\n\n我从 prerender.io 收到的回复基本上是,如果它使用了“复杂的 JS”,它可能无法正常工作。但我不确定他们对情况研究得有多深入。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.