如何使用带有隐藏块的微数据?

How to use microdata with hidden blocks?

情况:某些 div-块在特定显示分辨率下被隐藏。例如,有两个块有一个价格。显示高度较小时,其中一种显示在产品图片上方,反之亦然。

问:如果有多个内容相同的块,其中一个显示,另一个隐藏,如何实现微数据? Google 和 Schema.org 表示 it is not welcomed 隐藏标记的内容。

P. S. 这种行为是通过 css media max-width 等实现的。没有 JS。

微数据解析器不关心 HTML 元素是否在视觉上被隐藏;他们忽略任何 CSS.

特定的消费者(如搜索引擎)可能会决定以不同的方式处理来自视觉隐藏 HTML 元素的微数据,但是有太多的消费者(而且他们中的大多数人没有记录他们的行为)以至于不可能有一个普遍的答案。¹由于许多消费者也支持 JSON-LD,默认情况下所有内容都是隐藏的,以不同的方式处理这两种情况似乎不一致……但谁知道呢。

所以我认为你有三个四个选项:

  • 为两种分辨率指定元素上的微数据(即复制它)。但未定义复制属性的含义(尽管在实践中这可能没有问题) .
  • 仅在一个分辨率的元素上指定微数据。最适合大多数用户使用的变体。
  • 改用JSON-LD。但是仅仅因为那个问题(如果它真的是一个问题的话)可能不值得这样做。
  • 不要重复你的 content/elements. ;-)

(我只会标记一个分辨率的元素。)


¹ 在 Stack Overflow 上寻求 SEO 建议或搜索引擎服务的行为是题外话。可以在 Webmasters SE. See, for example, the questions Can microdata be implemented in meta tags? and How does Google handle <link> elements in the <body>? 上询问 SEO 相关问题(可以在 body 中的 metalink 元素上指定微数据;这些默认情况下是隐藏的)。