我有一个页面,通过使用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>
答案 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。
它应该可以工作,但我知道人们已经报告了测试工具的问题。