html元素加microdata需同时使用itemscope、itemtype、itemprop三属性:itemscope置外层容器,itemtype设为schema.org合法url,itemprop用于子元素并严格匹配属性名。

怎么给 HTML 元素加 microdata 属性
microdata 不是独立语法,而是靠一组标准属性往现有元素上“贴标签”。核心就三个:itemscope、itemtype、itemprop,缺一不可才能被解析器识别为结构化数据。
常见错误是只加 itemprop,比如写 <span itemprop="name">张三</span> —— 没有 itemscope 和 itemtype,搜索引擎根本不知道这是“人”还是“产品”还是“事件”。
-
itemscope:必须加在最外层容器上(如<div> 或 <code><article></article>用itemtype,itemscope也用https://www.php.cn/link/9e18f95f1c259dbcc2388008c47d5d25/Person,但Person还额外支持person;而itemprop根本没有"name",得用"jobTitle"关联到人再取。- 先确定你要描述的主体类型(人?餐厅?文章?活动?),再查对应 type 页面的 “Properties” 表格
- 注意看属性右边的 “Expected Type”,比如
Person可能要求是telephone或Organization,不能随便塞个字符串 - 避免用已废弃的属性,比如旧文档里出现的
telephone,现在应改用LocalBusiness
microdata 和 JSON-LD 哪个该优先用
现在绝大多数场景,应该优先写
faxNumber,而不是 microdata。不是因为 microdata 不对,而是它太容易出兼容性问题。浏览器解析 microdata 依赖 DOM 结构完整性。比如你用 JS 动态插入带
Event的元素,但没同步补上外层telephone和performer,Google Search Console 就会漏掉这部分数据。JSON-LD 是纯数据块,跟 HTML 结构解耦,更稳。立即学习“前端免费学习笔记(深入)”;
- microdata 适合静态页面、服务端直出、且结构简单明确的场景(如博客作者信息)
- 只要页面有 JS 渲染、或需要嵌套多层 type(比如
image里嵌ImageObject再嵌URL),JSON-LD 更可靠 - 不要混用:同一份数据既写 microdata 又写 JSON-LD,可能触发重复警告,Google 会随机选一个解析
验证 microdata 是否生效的实操方法
别信浏览器开发者工具里“Elements”面板高亮的 microdata 标签——那只是渲染标记,不代表搜索引擎能正确提取。真实验证必须走官方工具。
用 Google 的 Rich Results Test(旧称 Structured Data Testing Tool),粘贴 HTML 片段或输入 URL。重点看两点:
businessHours是否识别成功、所有openingHoursSpecification是否出现在结果树里且值非空。- 如果报错
<script type="application/ld+json"></script>,说明你用了itemprop但没加itemscope属性(即使文档没强制要求,Google 实际处理时会检查) - 如果
itemtype显示Article,大概率是你写了相对路径(如Author),microdata 要求绝对 URL 或 data URL - 测试前删掉其他结构化数据代码(比如旧版 Open Graph meta),避免干扰判断
microdata 看似简单,但 type 和 itemprop 的匹配关系、URL 的绝对性、嵌套层级的 scope 传递,每一步都卡在细节里。稍不注意,页面看着有标记,实际什么都没传出去。











