type属性必须与服务端content-type响应头严格匹配才尝试渲染,否则直接fallback;仅type="application/pdf"被主流浏览器识别,svg需type="image/svg+xml",且data必须为有效url。

type 属性必须显式声明且与响应头匹配
浏览器只在 type 值和服务器返回的 Content-Type 响应头完全一致时,才尝试渲染资源;否则直接 fallback。这不是“建议写”,而是硬性触发条件。
-
type="application/pdf"是唯一被 Chrome/Firefox/Safari 广泛识别的 PDF 类型,写成pdf、text/pdf或留空都会失败 - 嵌入 SVG 时用
type="image/svg+xml",但若服务端返回的是text/plain(常见于静态托管平台),即使路径正确也会降级 - 对 PDF 或 SVG,可临时加
typemustmatch属性验证是否匹配:不加时浏览器可能“宽容”处理,加了则严格校验,便于调试
data 和 type 必须同时提供有效值
只写 data 不写 type,或反过来,会导致空白区域——浏览器既不加载也不 fallback。这不是 bug,是规范行为。
-
data必须是可访问的 URL(http://或https://协议),file://下多数浏览器会忽略type,仅按文件扩展名判断,不可靠 -
type值不能凭空猜测,需查 MIME 类型标准表,例如 PNG 是image/png,不是png或image/PNG(大小写敏感) - 本地开发时,用
http://localhost:port启服务,避免因协议限制导致 type 失效
fallback 内容只在明确加载失败时生效
很多人误以为“没显示出来就该 fallback”,其实 fallback 只在以下情况触发:404、CORS 拒绝、type 与响应头不匹配、或 data 指向空/无效 URL。单纯样式遮挡或 JS 隐藏不会激活它。
- fallback 区域必须是合法 HTML 子节点:
<p></p>、<img>、<object></object>都可以;纯文本、注释、<script></script>不算 - 如果想让 fallback 在所有浏览器中稳定出现,可在内部嵌一个带
src的<img>,而不是只写提示文字 - PDF 场景下,fallback 里放下载链接比写“请安装插件”更实用,因为现代浏览器已无 Flash 插件概念
Safari 16+ 对 width/height 有隐式依赖
在 Safari 16 及更新版本中,嵌入 PDF 时若未设置 width 和 height(哪怕设为 100%),内建 PDF 查看器可能不启动,只显示空白或 fallback 内容。
- Chrome 和 Firefox 不强制要求尺寸,但写上能避免布局塌陷,也兼容旧版 Safari
- 响应式场景下,推荐用 CSS 控制尺寸:
style="width: 100%; height: 600px;",而非 HTML 属性,方便媒体查询覆盖 - 设
height="100%"时,父容器必须有明确高度(如min-height: 600px),否则仍为空白
Content-Type。调试时优先检查 DevTools 的 Network → Response Headers。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











