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