IE6–IE8完全不识别<audio>标签,Android 4.3及更早WebView虽识别标签但不支持src加载和play(),IE9仅支持PCM编码WAV;需用html5media.js降级至Flash或提供下载链接与文字稿兜底。

单靠 <audio> 标签在 IE9 以下、Android 4.3 及更旧 WebView 中必然失败,必须降级到 Flash 或用 polyfill 拦截并替换。
为什么原生 <audio> 在老旧浏览器里直接不工作
IE6–IE8 完全不认识 <audio> 标签,解析时直接跳过;Android 4.3 及更早的 WebView 虽然能识别标签,但不支持任何 src 或 <source> 加载逻辑,play() 调用静默失败,error 事件也不触发。这不是“兼容性差”,是根本没实现。
- IE9 支持
<audio>,但只认 WAV(且需 PCM 编码),MP3/OGG 全部拒解码 - 旧版 Safari(≤5.1)和 Firefox(≤3.6)对
preload、loop行为不一致,canplay事件常不触发 - 所有旧环境都不支持
networkState和readyState的标准值,查audio.readyState === 0不能说明“未加载”,只是属性不存在
html5media.js 是目前最轻量可靠的降级方案
它不依赖 jQuery,体积仅 ~25KB,检测到不支持 HTML5 音频时自动注入 Flowplayer Flash 播放器,并把原 <audio> 的 src、controls、autoplay 属性映射过去。关键它只在真正需要时加载 Flash,不影响现代浏览器执行路径。
- 必须在
<head>中引入:<script src="https://cdn.jsdelivr.net/npm/html5media@1.1.8/dist/html5media.min.js"></script> - 不要手动写 Flash
<object>或判断navigator.userAgent——html5media 内部已做 feature detection - 若项目已用 VideoJS,别叠加 html5media:VideoJS 自带 Flash fallback,重复引入会导致冲突
手动 fallback 到链接下载(无 JS 环境兜底)
当连 JS 都被禁用(如企业内网锁死环境),或 html5media 加载失败时,得靠 HTML 本身提供退路。核心是把 <audio> 当成“增强容器”,里面放真实可点击的 <a>。
立即学习“前端免费学习笔记(深入)”;
- 每个
<source>后紧跟一个<a href="xxx.mp3">下载 MP3</a>,确保文字提示明确 - 不要写
<p>您的浏览器不支持音频播放</p>这种被动文案,改成<p>点击下载收听:<a href="xxx.mp3">普通话讲解(MP3)</a></p> - 如果音频是关键内容(比如听力题),务必提供文字稿
<details><summary>文字转录</summary>...</details>,这是 WCAG 2.1 AA 强制要求
真正麻烦的不是“怎么播”,而是“播不了时用户知道下一步该干什么”。老旧浏览器用户往往无法自行升级,他们需要的是确定性操作路径,而不是报错代码或空白控件。



















