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



















