必须同时设置 data 和 type 属性,缺一不可;data 需为有效 url,type 必须匹配实际 mime 类型;建议显式设置宽高并用 css 控制响应式;classid/codebase 已废弃;typemustmatch 可防止 mime 错配。

必须设置 data 和 type 才能生效
浏览器只认这两个属性作为加载依据,缺一不可。如果只写 data 不写 type,多数现代浏览器会静默失败(不报错也不渲染);反之只写 type 则根本不知道从哪加载资源。
-
data必须是有效 URL,支持相对路径(如"./report.pdf")、绝对路径("/assets/chart.svg")或完整地址("https://example.com/doc.pdf") -
type必须匹配实际资源的 MIME 类型,常见值:"application/pdf"、"image/svg+xml"、"text/html"、"audio/mpeg"—— 写错会导致降级内容直接显示 - 某些旧浏览器(如 IE11)对
type校验更松,但 Chrome/Firefox/Edge 严格按 MIME 匹配,建议用curl -I或浏览器开发者工具 Network 面板确认真实响应头中的Content-Type
width 和 height 不设默认为 300×150,但别信它
这个默认值来自 HTML 规范,但实际表现极不稳定:SVG 可能被压缩变形,PDF 渲染器可能忽略尺寸,text/html 嵌套页面甚至会撑满父容器。显式设置才是可控的起点。
- 单位支持像素(
"600")、百分比("100%"),但注意:百分比是相对于父容器计算的,若父元素无明确高度,height="100%"会失效 - 对响应式布局,推荐用 CSS 控制尺寸(
style="width: 100%; max-width: 800px;"),而非依赖 HTML 属性 —— 因为width/height属性在现代 CSS 中已被视为过时(deprecated) - 某些 PDF 查看器(如 Chrome 内置 PDF 阅读器)会强制最小高度(约 200px),即使设
height="1"也无效
别用 classid 和 codebase,它们已失效
这些是 IE 时代为 ActiveX 插件设计的属性,所有现代浏览器(包括 Edge Chromium)已完全移除支持。继续使用不仅无效,还会在控制台抛出警告,干扰调试。
-
classid的典型值如"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"现在毫无意义,Flash 停服后该 CLSID 已成历史文物 -
codebase指向的 CAB 文件下载地址(如"http://active.macromedia.com/flash4/cabs/swflash.cab")早已不可访问,且现代浏览器拒绝执行任何 ActiveX 相关逻辑 - 如果你看到老项目里还留着这些,直接删掉 —— 它们不会带来兼容性,只会增加解析负担
加 typemustmatch 是防止 MIME 类型错配的保险丝
这个布尔属性告诉浏览器:“只有当服务器返回的 Content-Type 头和你写的 type 值完全一致时,才允许加载”。它不是默认开启的,但强烈建议加上。
- 例如你写了
type="application/pdf",但服务器错误地返回了text/plain,没加typemustmatch时浏览器可能仍尝试解析并显示乱码;加了就会跳过加载,直接展示 fallback 内容 - 它对开发阶段特别有用:本地静态服务(如
python -m http.server)通常不设正确 MIME,启用此属性可提前暴露配置问题 - 注意:该属性仅在
data存在时生效,且不兼容 IE,但所有主流现代浏览器都支持
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











