embed 和 object 元素
使用 embed 和 object 嵌入插件及备用内容
embed 和 object 元素 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。
embed 元素
<embed> 使用浏览器插件或浏览器内置的处理程序嵌入外部内容。其 type 属性用于指定 MIME 类型;src 是资源 URL。它是一个空元素,没有子元素或备用内容。
object 元素
<object> 比 embed 更加灵活。其 data 属性指向资源;type 用于指定 MIME 类型。如果 object 无法加载,其子元素会作为备用内容,包括嵌套的 object 或描述性文本。
object 中的备用内容
请嵌套备用内容:<object data="file.pdf" type="application/pdf"><a href="file.pdf">Download PDF</a></object>。如果浏览器无法以内嵌方式渲染 PDF,就会显示下载链接。备用内容是 object 优于 embed 的主要优势。
嵌入 PDF
请使用 object 或 embed 嵌入 PDF 文件:<object data="doc.pdf" type="application/pdf" width="100%" height="600">。浏览器支持情况各不相同:Chrome 和 Firefox 可以原生渲染 PDF,其他浏览器可能会显示下载提示。请提供备用链接。
iframe、object 与 embed 的比较
嵌入 HTML 文档时:首选 iframe,因为它专为此用途设计,并且安全模型清晰。使用媒体插件时:使用 embed(旧式 Flash、SVG 渲染)。需要备用内容的文档:使用 object。在现代开发中,大多数插件用途都由原生 HTML5 元素(video、audio、canvas)处理。
安全注意事项
embed 和 object 都可以执行插件内容(历史上包括 Flash),这会形成很大的攻击面。现代浏览器已经移除了插件支持。只能嵌入受信任的内容。跨源的 embed/object 内容无法像同源内容那样通过脚本控制。
通过 object 嵌入 SVG
请使用 object 嵌入 SVG:<object data="image.svg" type="image/svg+xml" width="200" height="200">。与 img 标签不同,object 中的 SVG 可以运行自己的脚本,并响应外部 CSS(如果同源)。当内联 SVG 不切实际时,请使用这种方式嵌入交互式 SVG。
param 元素
请使用嵌套的 <param name="autoplay" value="true"> 元素向 object 插件传递参数。这是配置 Flash 对象的标准方式。由于浏览器已经移除插件支持,现代使用场景已经很少。
使用 usemap 创建图像映射
object 可以与 usemap 配合创建图像映射,即在嵌入的图像上设置可点击区域。请在 <map> 元素中使用 <area> 子元素定义区域。对于交互式图像区域,使用元素上的 href 的现代 SVG 是更好的方案。
可访问性
请为 embed 和 object 都添加 title 属性,以便屏幕阅读器识别。object 支持 aria-label。这两个元素都无法提供原生 HTML5 元素所具有的丰富可访问性语义。对于媒体内容,始终优先使用带字幕的原生 video 和 audio 元素。
旧式与现代方式
embed 和 object 基本上都是旧式元素。它们的主要用途(Flash)已经消失。当前合理的用途包括:带备用内容的内嵌 PDF 文档、交互式 SVG 嵌入,以及无法现代化的旧内容。新项目应在所有媒体需求中优先使用原生 HTML5 元素。
知识检查
使用 object 而不是 embed 嵌入内容的主要优势是什么?
总结
embed 和 object 是用于嵌入非 HTML 内容的旧式元素。需要备用内容时,应优先使用 object。两者都接受 MIME 类型声明并支持传递参数。对于新项目,应优先使用现代替代方案(video、audio、canvas、内联 SVG)。通过 object 嵌入 PDF 仍然是常见用例,也可以使用 iframe 作为替代方案。
常见问题解答
「embed 和 object 元素」课时是免费的吗?
是的 — 「embed 和 object 元素」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。
「embed 和 object 元素」这节课中我会学到什么?
使用 embed 和 object 嵌入插件及备用内容 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 HTML Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「embed 和 object 元素」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 HTML Academy 课中编写并运行代码吗?
能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- iframe 元素:src 与 sandbox
- iframe 安全:点击劫持与 X-Frame-Options
- embed 和 object 元素
- iframe 延迟加载