Audio 标签的若干个坑
这两天写了一点和 Audio 标签相关的代码,于是就被浏览器坑的昏天暗地,在这里做个笔记
状态码
Chrome, Safari, Firefox 实现的 Audio 标签是不支持对响应状态码为 200 的文件进行循环的,目前看起来这似乎已经变成了行业的潜规则似的。说是潜规则,是因为我没有在规范里找到任何与此有关的描述,我没有对 IE 进行测试。这里也有人遇到了和我一样的问题:HTML5 video will not loop。
Audio 标签的 load 方法
在 30/31 版本的 Firefox 中 audio.load() 方法是基本没什么作用的(我没有测试更低版本的), 如果一个 Audio 标签 preload 属性的值为 none ,那么它不会自动地去加载这个音频文件,在其他浏览器中可以通过 audio.load() 来触发下载音频文件的行为进而实现按需预加载的效果,但这在 Firefox 下是无效的,只有调用 audio.play() 时它才会遵循规范触发下载资源的行为
循环播放的间隔
不同浏览器实现的循环播放的间隔是不同的,测试代码:
结果如下:
# Chrome - 1
1161
# Chrome - 2
10215
# Firefox - 1
1264
# Firefox - 2
10280
# 最令人发指的 Safari - 1
2324
# 最令人发指的 Safari - 2
11330
目前没有找到比较好的办法来处理这个问题。