有没有办法陷阱完成声音文件加载事件?

时间:2010-12-07 22:09:39

标签: javascript events audio onload

我希望能够捕获浏览器事件,告诉我WAV文件资源何时成功完成加载到浏览器缓存中。

有了这样的事件,我可以在下载文件时在页面上放置一些文字,要求用户耐心等待它的到来。毕竟,他们希望立即听到文件,但除非文件已经在缓存中(从之前的页面访问),否则不会发生这种情况。活动结束后,我可以发出音乐已准备就绪的消息等等。

在IE中,一个人使用BGSOUND,它是微软发明的一个专有元素,它不会触发任何事件(你可能会认为“onload”是一个,但不是)。可以创建Javascript中的音频对象,但是......似乎没有办法捕获浏览器事件,该事件告诉您何时声音文件(例如WAV文件)已完成加载。

我会接受任何解决方案,特别是如果它涉及Javascript。请注意,“明显的”页面加载事件是不合适的,因为它不会发生在我需要的粒度级别。

另请注意,我正在使用我当前的Javascript代码在IE和Firefox中成功加载和播放音乐文件,但是我真的希望改善用户在等待加载大型音乐文件时耐心等待的消息体验。

2 个答案:

答案 0 :(得分:1)

如果您可以自由地合并SoundManager2每个声音片段都有onload个事件和readyState属性。它还有一个whileloading事件,在加载数据时会定期触发。

请注意,您的用户群需要Flash插件(或支持HTML5音频的浏览器,如果您已启用该设置),并且对于完整平台支持,声音需要采用MP3 / MP4格式

如果这些限制是可以接受的,那么SM2就是你想要的。

答案 1 :(得分:1)

可悲的是,不适用于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