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

时间:2015-03-15 18:00:36

标签: javascript html schema.org microdata google-rich-snippets

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

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

一个Event的HTML代码是:

<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 个答案:

答案 0 :(得分:19)

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

  

此外,Google可以读取JSON-LD数据,即使它被动态地注入到网页的内容中,例如通过Javascript代码或嵌入式&#34;小部件&#34;。

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

他们的testing tool没有阅读它可能会或可能不会意味着什么(可能该工具无法处理此问题,但他们的内部系统会这样做)。但是,您的实际标记应该没有问题,因为您可以通过粘贴标记而不是输入网址来轻松地自行测试。

答案 1 :(得分:2)

如果您在使用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>

答案 2 :(得分:0)

这取决于它的标记类型。来自Google

  

所有Knowledge Graph功能,附加链接搜索框,Event Rich Snippets和Recipe Rich Snippets都支持JSON-LD; Google建议将JSON-LD用于这些功能。对于剩余的Rich Snippets类型和面包屑,Google建议使用微数据或RDFa。

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