有没有一种方法可以捕获声音文件加载事件的完成?

5
我希望能够捕获浏览器事件,告诉我WAV文件资源已经成功地加载到浏览器缓存中。
有了这样的事件,我可以在文件下载时在页面上放置一些文字,请求用户耐心等待。毕竟,他们期望立即听到文件的声音,但除非文件已经在缓存中(来自以前的页面访问),否则不会发生这种情况。在事件发生后,我可以发布一条消息,说明音乐已准备好播放等等。
在IE中,使用BGSOUND,这是由Microsoft发明的专有元素,并且它不会触发任何事件(您可能会预期“onload”是其中之一,但实际上不是)。可以创建Javascript中的音频对象,但是...似乎没有办法捕获浏览器事件,告诉您声音文件(例如WAV文件)何时完成加载。
我会考虑任何解决方案,特别是涉及Javascript的解决方案。请注意,“显而易见”的页面加载事件不足够,因为它不会以我所需的细粒度发生。
另请注意,我正在使用当前的Javascript代码成功加载和播放IE和Firefox中的音乐文件,但真的很想通过请求用户耐心等待大型音乐文件加载的消息来改善用户体验。
2个回答

1

如果您可以自由地使用SoundManager2,每个音频剪辑都有一个onload事件和一个readyState属性。它还有一个whileloading事件,该事件会在数据加载时定期触发。

请注意,您的用户需要安装Flash插件(或支持HTML5音频的浏览器,如果您已启用该设置),并且为了获得完整的平台支持,声音需要以MP3 / MP4格式提供。

如果这些限制是可以接受的,则SM2就是您想要的。


0

遗憾的是,这个不适用于WAV文件: 只需使用HTML5音频标签的API,像这样:

var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'backgroundsound.ogg');
audioElement.load()
audioElement.addEventListener("load", function() {
    alert('Loading done!')
    audioElement.play();
}, true);

我认为声音文件只能是 ogg(vorbis)或mp3


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接