HTML4 的 标签已过时,无语义、不可访问、不被 HTML5 承认;应统一用 替代,其支持多格式、原生控件、JS API 和无障碍。

HTML4 的 标签在现代浏览器中仍能“工作”,但属于非标准、无语义、不可访问、不被 HTML5 规范承认的遗留用法,不建议继续使用;HTML5 中应统一使用 标签替代视频插件场景。
为什么 不该再用了
它最早是 Netscape 的私有扩展,HTML4 未定义,HTML5 明确将其列为“只允许用于向后兼容的特殊情况”——也就是说,仅当嵌入 Flash、QuickTime 等已淘汰的插件时才可能被动支持,且行为完全依赖浏览器厂商实现,没有统一属性、无事件规范、无法键盘操作、屏幕阅读器基本不可读。
- 常见错误现象:
在 Chrome/Firefox 中可能偶然播放,但无控件、无autoplay响应、load()方法不存在 - 兼容性陷阱:Safari 对
的 MIME 类型校验更严格,常静默失败;Edge(Chromium 版)虽兼容但会触发控制台警告"embed is deprecated" - 移动端几乎全部失效:iOS Safari 和 Android WebView 默认禁用所有插件,
直接不渲染
是唯一推荐的 HTML5 替代方案
它原生支持 MP4(H.264)、WebM(VP9/AV1)、OGG(Theora),具备完整播放控制、字幕轨道、JavaScript API 和无障碍支持,无需任何插件。
- 基础用法必须包含
src或子元素,否则不触发加载 - 关键属性:
controls(显示原生控件)、preload="metadata"(避免首屏卡顿)、playsinline(iOS 全屏限制绕过) - 不要依赖单格式:MP4 兼容性最好,但需搭配 WebM 提供开源编码 fallback
旧项目迁移要注意的硬坑
直接替换 为 不等于万事大吉,尤其当原逻辑依赖插件生命周期或自定义 UI 时:
立即学习“前端免费学习笔记(深入)”;
-
的width/height是内联尺寸,需显式设 CSS 或属性,否则默认 300×150 像素 - Flash 场景中常用的
flashvars参数,在中需转为 JavaScript 初始化(如设置currentTime、监听timeupdate) - 若原
加载的是流媒体(如 RTMP),无法直接支持——必须改用 MSE(Media Source Extensions)+,或切 HLS(hls.js)/DASH(dash.js)方案
真正麻烦的从来不是标签怎么写,而是旧系统里那些没文档的 Flash 参数映射、自动播放策略适配、以及 iOS 上静音 autoplay 的兜底逻辑——这些不会因为换了个标签就自动消失。










