gpt4 book ai didi

javascript - 如何让 Google 理解触发 Javascript 的链接?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:27:31 25 4
gpt4 key购买 nike

我正在开发一个帮助人们理解说唱歌词的网站。用户看到说唱歌曲的歌词,可以点击特定的歌词查看解释:

alt text (click here for more)

如您所见,每个解释都有一个永久链接(在本例中为 http://RapExegesis.com/2636)。当您在浏览器中访问其中一个永久链接时,会发生以下情况:

  1. 该应用会查找正确的歌曲和艺术家并将您重定向到 http://rapexegesis.com/lyrics/ARTIST/SONG#note-2633 (在本例中为 http://rapexegesis.com/lyrics/Jay-z/Empire-state-of-mind#note-2636)
  2. 加载歌曲页面时,应用会检查 URL 片段中是否有“note-\d+”
  3. 如果有,它会自动打开正确的解释,并将其滚动到 View 中

理想情况下,Google 和其他搜索引擎会将这些永久链接与其相应的解释相关联。但是,由于 Google 不理解 Javascript,因此这两个 URL 看起来完全一样:

因此,http://rapexegesis.com/lyrics/Jay-z/Empire-state-of-mind看起来与 http://RapExegesis.com/2636 完全一样也给谷歌。

显然这并不理想。有什么想法吗?理想情况下,我想向搜索引擎显示不同版本的 http://RapExegesis.com/2636 -- 类似的东西

Lyric: Catch me in the kitchen like a Simmons whipping pastry

Meaning: "In the kitchen" refers to cooking up crack (cf. here, here, and here)

Vanessa and Angela Simmons, the twentysomething daughters of Reverend Run of Run-DMC, run Pastry, an apparel and shoe brand

编辑: 我最初提出问题的方式有点令人困惑。有两个不同的问题:

  1. 歌曲页面上的解释链接如何运作?
  2. 与独立解释相对应的 URL 是如何工作的?

这张图 ( full size here ) 应该让事情更清楚一点:

alt text

最佳答案

这是一个很好的解决方案...基于查看您的描述/图表以及对以前网站的考虑。

要记住两个关键概念......剩下的就是细节:

  • 不要向 Google 展示您未向普通用户展示的内容。在这里做任何棘手的事情都会给他们带来大麻烦,而且无论如何都没有必要。
  • 使用Progressive Enhancement为您的 JavaScript 用户提供更好的体验

这可以这样来做...

在您的歌词页面上,为每个解释创建一个永久链接,如下所示:

<a href="/lyrics/ARTIST/SONG?note=NOTEID" onclick="showPopUpExplanation(NOTEID);">lyric snippet here</a>

请注意我们如何使用查询字符串 (?) 而不是散列 (#),以便 Google(和不支持 JS 的用户)将其视为真实、唯一的永久链接 URL。

现在,使用 Progressive Enhancement 并将 onclick 处理程序添加到所有 .explanation-link 链接(如上所示或类似 @Dean suggested ),以获得页内弹出窗口工作。

您根本不需要为您的 JavaScript 用户使用#(散列)链接。这仅在您尝试允许浏览器的后退按钮使用 AJAX 时才有必要,但由于您显示的是页面内弹出窗口(可能带有“关闭”按钮),因此根本没有必要。

想要与 friend 分享特定解释的用户将使用您的短 (/NOTEID) url。这些缩短的 URL 应该是一个 301 重定向到您的真实永久链接(因此搜索引擎不会索引这两个 URL)。

最后,要使永久链接正常工作,您将使用一些服务器端脚本,以便访问该页面时会立即显示弹出窗口。做这样的事情:

<?php if (isset($_GET['note'])): ?>
<!-- place above the song lyrics; use CSS to style nicely for non-JS -->
<div id="explanation">
<?php printExplanation((int)$_GET['note']); ?>
</div>

<script type="text/javascript">
$('#explanation').hide(); // hide HTML explanation for JS users
showPopUpExplanationFromDiv($('#explanation'));
</script>
<?php endif; ?>

这里的重要部分是您用 HTML 打印解释,而不是用 JavaScript/JSON 打印,以便 Google 和非 JS 用户可以看到它,但逐步增强 JS 用户.

关于javascript - 如何让 Google 理解触发 Javascript 的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1806586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com