【发布时间】:2012-03-14 06:26:28
【问题描述】:
我一直在环顾四周,我开始担心这是不可能的。
有什么办法可以制作一个标准的<audio> 标记与后备...
<audio>
<source src='song.ogg' type='audio/ogg'></source>
<source src='song.mp3' type='audio/mp3'></source>
</audio>
...有一个 onload 事件。我环顾四周,我能找到的只是一些可能有效或无效的黑客(它们在 Chrome 上不适合我)和canplaythrough 事件。
我想要这个的原因是因为我正在制作一个演示文稿,其中有很多音频片段可以在某些点播放。我不希望在加载所有音频之前开始演示(否则事情可能会不同步)。我希望一次加载 1 个剪辑,以便创建一种加载栏。我真的不想求助于使用 Flash 声音,因为这应该展示纯 Web 技术。
所以基本上我有一个loadAudio 函数,它循环遍历要加载的音频文件数组audioQueue。 loadAudio 被调用一次,然后它会调用自身,直到所有文件都加载完毕。
问题是我没有找到触发加载下一个文件的正确事件。
loadAudio = function(index)
{
mer = audioQueue[index];
var ob = "<audio id='" + mer + "'><source src='resources/sounds/" + mer + ".ogg' type='audio/ogg'></source><source src='resources/sounds/" + mer + ".mp3' type='audio/mp3'></source></audio>";
$("#audios").append(ob);
$("#" + mer).get(0).addEventListener('A WORKING EVENT RIGHT HERE WOULD BE NICE', function() { alert("loaded");
if (index + 1 < audioQueue) { loadAudio(index + 1); } }, false);
}
所以。有机会进行适当的音频加载吗?只要还是 HTML 和 Javascript,我基本上愿意做任何事情。
【问题讨论】:
-
前段时间有同样的问题,请参阅:stackoverflow.com/questions/9332167/preload-audio-files-event 只是“剥离”图像部分。
-
@m90 啊,完美运行。你能把它变成一个答案,以便我把它设置为正确的吗?
标签: javascript jquery html audio html5-audio