如果标记是使用 JavaScript 动态构建的,那么 Schema.org 标记是否有效?

IT技术 javascript html schema.org microdata google-rich-snippets
2021-01-23 03:27:07

我有一个页面,其中一些事件是通过使用 JavaScript 读取一些 JSON 来动态加载的。div使用EventSchema.org 标记为每个事件构建了一个

Google 的测试工具不会读取此标记。是因为标记错误,还是因为动态加载?

一个的 HTML 代码Event是:

<div class="evento well" itemscope itemtype="http://schema.org/Event">
   <meta itemprop="startDate" content="2015-03-20T20:00:00.000Z">
   <meta itemprop="endDate" content="2015-01-21T20:00:00.000Z">
   <div class="dataEvento">
      <div class="dayWeekEvento">venerdì</div>
      <div class="dayNumEvento">20</div>
      <div class="monthEvento">Marzo</div>
   </div>
   <div class="datiEvento">
      <div class="oraEvento">ore 21:00</div>
      <div class="titoloEvento"><span itemprop="name">Titolo evento</span></div>
      <div class="luogoEvento" itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress"><a href="https://www.google.it/maps/place/Milano" target="_blank"><span class=" glyphicon glyphicon-map-marker" aria-hidden="true"></span> <span itemprop="addressLocality">Milano</span></a></div>
   </div>
</div>
3个回答

Google 的文档只提到如果使用语法 JSON-LD,他们可以使用动态添加的结构化数据:

此外,即使 JSON-LD 数据被动态注入到页面内容中,例如通过 Javascript 代码或嵌入的“小部件”,Google 也可以读取 JSON-LD 数据。

这并不一定意味着他们无法在其他语法(如 Microdata 或 RDFa)的情况下读取它,但至少他们没有记录它。

他们的测试工具不读取它可能意味着也可能不意味着什么(可能是该工具不处理这个,但他们的内部系统可以)。但是,您的实际标记应该没有问题,因为您可以通过粘贴您的标记而不是输入您的 URL 来轻松地自己测试它。

就在最近,Google 在他们的文档中添加了允许和解释使用 Javascript 生成 JSON-LD:developers.google.com/search/docs/guides/...
2021-03-14 03:27:07
谷歌还会收集动态添加或更改的微数据。他们的 SD 测试工具可以处理一些 JavaScript,但远不是 100%。您可以粘贴预渲染的 html 来测试内容。Google Search Console 结构化数据报告提供了关于 Google 如何读取您的标记的更准确数据,但您必须等到页面被抓取和处理。
2021-03-22 03:27:07
@KarimSamir:你到底是什么意思?确定哪个系统做什么?
2021-03-23 03:27:07
你确定有内部系统吗?,我在那里的文档中找不到
2021-03-30 03:27:07

如果您在使用 Google 测试工具验证架构标记时遇到问题,您可以使用 JS 创建 json-ld 片段,它还允许您在需要时操作数据,例如:

<script> 
    (function(){
       var data = {
            "@context": "http://www.schema.org",
            ...
        }
        var script = document.createElement('script');
        script.type = "application/ld+json";
        script.innerHTML = JSON.stringify(data);
        document.getElementsByTagName('head')[0].appendChild(script); 
    })(document);
</script>

这取决于它是什么类型的标记。来自谷歌

JSON-LD 支持所有知识图功能、附加链接搜索框、事件丰富片段和食谱丰富片段;Google 建议对这些功能使用 JSON-LD。对于其余的 Rich Snippets 类型和面包屑,Google 建议使用微数据或 RDFa。

它应该可以工作,但我知道人们已经报告了测试工具的问题。