data为空或非法时fallback不显示,因为浏览器根本不会发起请求,而fallback仅在请求发出后失败(如404、mime不匹配、cors阻止)时才触发;data是加载资源的唯一入口,无请求即无失败,故内部内容永不渲染。

data 是 <object></object> 标签的必需属性,不是可选补充,不填或填错就完全不加载资源——浏览器连请求都不会发。
为什么 data 为空或非法时 fallback 内容也不显示
常见错误现象:<object data="" type="application/pdf"><p>PDF 内容</p></object> 中的 <p></p> 永远不会出现。
-
data为空字符串、javascript:伪协议、未编码中文路径(如report.pdf?name=张三)、file://协议,都会导致浏览器静默跳过整个加载流程——没有请求,就没有“失败”,也就不会触发 fallback - fallback 只在 HTTP 请求已发出且返回 4xx/5xx、CORS 阻止、MIME 不匹配(如服务端返回
text/plain却声明type="application/pdf")等明确失败场景下才生效 - 相对路径写错层级(比如写成
./docs/file.pdf但实际在/assets/pdfs/下),也会 404,但此时 fallback 才会显示
data 支持哪几种 URL 形式?各有什么限制
三种合法形式都行,但行为和兼容性差异明显:
- 相对路径(如
assets/chart.svg):以当前 HTML 文档 URL 为基准解析,注意别漏掉./或多写../ - 绝对 URL(如
https://cdn.example.com/doc.pdf):必须确保目标服务器配置了正确 CORS 头,否则 Chrome/Firefox 会拒绝渲染(即使资源存在) -
data:URI(如data:application/pdf;base64,...):绕过网络请求,但 Base64 编码后体积膨胀约 33%,且 Safari 对 PDF 的data:支持不稳定;Chrome/Firefox 更可靠
data 和 type 谁决定浏览器怎么处理资源
type 属性只是提示,真正起作用的是响应头里的 Content-Type。
- 哪怕你写了
type="application/pdf",如果服务端返回Content-Type: text/plain,Chrome 仍会下载文件而不是嵌入显示 -
type唯一有用的地方是提前告知浏览器“我预期加载什么”,帮助它快速匹配已注册的处理器(比如 PDF 查看器、SVG 渲染引擎) - 不要用
src替代data——<object src="..."></object>是无效写法,HTML 解析器直接忽略,资源彻底不加载,控制台也不会报错
最容易被忽略的一点:本地开发时用 file:// 协议打开 HTML,data 指向的任何本地路径(包括 ./xxx.pdf)都会被现代浏览器默认阻止,且无任何提示——必须起一个本地 HTTP 服务(如 python3 -m http.server)才能真实测试加载逻辑。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











