不能。object标签不是为图片设计的,无法直接显示PNG/JPG/GIF等位图,仅支持SVG等可嵌入文档格式,且需正确设置type和MIME类型,并用img作fallback。

object 标签能直接显示图片吗?
不能。 本身不是为图片设计的,它用于嵌入外部资源(如 PDF、SVG、Flash、自定义插件等),浏览器不会把 当作 处理——即使你给它 data 指向一个 PNG 路径,多数浏览器会报错或留白,而不是渲染图像。
为什么有人用 object 加图片?常见误用场景
主要出现在两类情况:
一是想“兜底”:以为 的 能优雅降级到 ;二是误读旧文档,把 SVG 内联写法()套用到位图上。
- SVG 可以用
,因为它是 XML 文档,支持 DOM 交互和 CSS 控制 - PNG/JPG/GIF 不行——它们是二进制图像,没有可嵌入的文档结构
- Chrome/Firefox 对
通常显示 “Failed to load resource” 或空白框 - Safari 可能尝试调用 QuickLook 插件,但不可控、不一致
真要兼容性插图,该用什么?
用 ,这是唯一标准、可靠、语义正确的方式。如果需要“兼容旧环境+现代特性”,优先考虑:
-
+:按屏幕密度、格式(WebP/AVIF)、视口条件切换资源 -
:简单响应式,兼容 IE 以外所有现代浏览器 - 对 IE8–10 等极老环境,用
src+data-src+ JS 检测加载(不推荐硬塞)
下面是一个最小可用的兼容方案示例(支持 WebP + fallback JPG):
立即学习“前端免费学习笔记(深入)”;
@@##@@
如果非要用 object 嵌入图像资源,只有一种可行路径
仅限 SVG 文件,且必须确保:
- SVG 是独立文件(非内联),无脚本、无外部引用(否则跨域或执行失败)
- 服务器返回正确的 MIME 类型:
image/svg+xml - 加
type="image/svg+xml"属性,显式声明类型 - 提供
作为 fallback(放在
内部)
示例:
注意: 中的 只有在 data 加载失败时才显示,但这个 fallback 行为在部分 iOS Safari 版本中不稳定——所以真正关键的,还是确保 SVG 文件可访问、类型正确、尺寸可控。












