object标签的备用内容仅在data 404、type不被识别、插件禁用或加载超时等真实失败时生效;正确写法需包含有效html节点(如p、a、img),并确保可访问性。

object 标签的备用内容不会自动显示,除非触发明确的失败条件——比如 data 404、type 不被识别、插件禁用或资源加载超时。只写内容不配 type 或留空 data,多数浏览器会直接渲染备用内容,但这属于“意外降级”,不是可靠行为。
备用内容什么情况下才真正生效
浏览器只在以下任一真实失败发生时,才丢弃 data 加载流程、转而渲染标签内部子内容:
-
data指向的 URL 返回 HTTP 404、403 或连接超时 -
type声明的 MIME 类型(如application/pdf)与当前环境不匹配(例如 PDF 插件被禁用、iOS Safari 不支持内嵌 PDF) -
type和实际资源类型冲突(如声明type="image/png",但文件是 SVG) - 用户手动阻止插件运行(如 Chrome 中点击地址栏插件图标并禁用 Flash)
注意:data 为空、未设 type、或仅用注释占位,都不构成标准降级触发条件——此时行为因浏览器而异,不可依赖。
正确书写备用内容的结构要点
备用内容必须是 <object></object> 开始与结束标签之间的**有效 HTML 内容节点**,不能只是空格或注释。推荐组合方式:
- 至少包含一个块级元素,如
<p></p>或<div>,避免被解析为纯文本<li>可嵌套 <code><img>作为视觉降级(如 SVG 失败时显示 PNG 截图) - 可嵌套
<a></a>提供下载链接(如 PDF 不支持时引导下载) - 避免在内部写
<script></script>:多数浏览器会忽略其中 JS 执行,且破坏无脚本环境下的降级逻辑 - Chrome / Edge:通常能正常渲染 PDF,备用内容永不出现(除非
data404) - iOS Safari:完全忽略
object内嵌 PDF,**立即显示备用内容**(这是最典型的触发场景) - Firefox:若 PDF.js 被禁用,也会回退到备用内容
错误示例:<object data="chart.svg"><!-- fallback --></object> → 注释不会被渲染为可见内容。
PDF 嵌入中备用内容的实际表现
在现代浏览器中,type="application/pdf" 的 object 行为差异明显:
因此,一个健壮的 PDF 嵌入应类似:
<object data="report.pdf" type="application/pdf" width="100%" height="600"> <p>您的设备不支持在线查看 PDF,请</p> <a href="report.pdf">点击下载</a>。 </object>
这里 <a></a> 是关键:它既是语义化降级,又提供真实可用路径。
为什么不用 embed 或 iframe 替代
对比三者原生降级能力:
-
<embed></embed>:无任何备用内容机制,失败即留白或报错,且无type属性校验 -
<iframe></iframe>:备用内容需靠 JS 检测onload/onerror,或 CSSiframe:not(:loaded)(未被 Safari 支持) -
<object></object>:唯一无需 JS、由浏览器原生实现多层判断并渲染子内容的方案
真正容易被忽略的是:备用内容的可访问性。如果只放一段文字,屏幕阅读器能读;但如果只放一张 <img> 却没 alt,就等于对视障用户关闭了整条降级通道。











