【问题标题】:Can JSON-LD be deployed asynchronously?JSON-LD 可以异步部署吗?
【发布时间】:2019-08-12 13:18:43
【问题描述】:

我将 JSON-LD 异步部署到脚本标签中:

var jsonLD = document.createElement('script');
jsonLD.type = 'application/ld+json';
jsonLD.innerHTML = JSON.stringify({
  "@context": "https://json-ld.org/contexts/person.jsonld",
  "@id": "http://dbpedia.org/resource/John_Lennon",
  "name": "John Lennon",
  "born": "1940-10-09",
  "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
});
document.head.appendChild(jsonLD);

Google's testing tool 在检查 URL 时无法识别任何 JSON-LD。它是否仍会被索引,或者 Google(和其他机器人)是否对异步加载的 JSON-LD 视而不见?

【问题讨论】:

标签: javascript json-ld google-rich-snippets


【解决方案1】:

测试工具不评估任何 Javascript。相反,您必须将 JSON-LD 硬编码到 HTML 中。这是一个示例 sn-p,该工具可以很好地解析它:

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <script type="application/ld+json">
  	{
      "@type": "person",
      "@context": "https://json-ld.org/contexts/person.jsonld",
      "@id": "http://dbpedia.org/resource/John_Lennon",
      "name": "John Lennon",
      "born": "1940-10-09",
      "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
    }
  </script>
</body>
</html>

【讨论】:

  • 那么接下来的问题是,测试工具是否表现得像实际的爬虫? JS 注入适用于常规浏览器客户端,因为它已加载,但我不确定爬虫。
  • 大部分机器人不执行JS,但我相信google现在处理一些JS。见this answer for details
【解决方案2】:

结构化数据测试工具的渲染能力有限,看起来无法处理您的示例。

Googlebot 使用常青版本的 Chrome 呈现。即它渲染得很好。

一种测试方法是在 Chrome 中查看页面并将其呈现的 HTML 复制到结构化数据测试工具中。然后您可能会看到您的数据。

请注意,大多数机器人此时不会渲染。因此,以这种方式生成 SD 将限制可以查看数据的系统数量。

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 2016-06-24
    • 1970-01-01
    • 2018-09-07
    • 2014-09-09
    • 2018-12-16
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多