2010-12-07 6 views
5

Me gustaría poder interceptar un evento del navegador que me dice cuando un recurso de archivo WAV ha terminado ha terminado de cargar en la memoria caché del navegador.¿Hay alguna manera de atrapar la finalización de un evento de carga de archivos de sonido?

Con tal evento, puedo poner algo de texto en la página mientras se descarga el archivo pidiendo al usuario que sea paciente para su llegada. Después de todo, esperan escuchar el archivo de inmediato, pero esto no sucederá a menos que el archivo ya esté en el caché (de visitas a la página anterior). Después del evento, puedo poner un mensaje que la música está lista para jugar, etc.

En IE se usa BGSOUND, que es un elemento patentado inventado por Microsoft, y no desencadena ningún evento (es de esperar "onload" para ser uno, pero no lo es). Se pueden crear objetos de audio en Javascript, pero ... no parece haber una manera de atrapar el evento del navegador que le dice cuándo un archivo de sonido (por ejemplo, un archivo WAV) ha terminado de cargarse.

Me gustaría tener alguna solución, especialmente si se trata de Javascript. Tenga en cuenta que el evento de carga de página "obvio" no es adecuado porque no ocurre en el nivel granular que necesito.

También tenga en cuenta que estoy cargando y reproduciendo archivos de música en IE y Firefox con mi código Javascript actual, pero me gustaría mejorar la experiencia de mi usuario con mensajes que requieren paciencia mientras esperan que se carguen archivos de música de gran tamaño. .

Respuesta

1

Si tiene libertad para incorporar SoundManager2 cada clip de sonido individual tiene un evento onload y una propiedad readyState. También tiene un evento whileloading que se dispara periódicamente mientras se cargan los datos.

Sin embargo, tenga en cuenta que su base de usuarios necesitará un complemento Flash (o un navegador que admita audio HTML5, si ha habilitado esa configuración), y para soporte completo de la plataforma los sonidos deben estar en MP3/MP4 formato.

Si esas restricciones son aceptables, entonces SM2 es lo que desea.

1

Lamentablemente este no funcionará con un archivo WAV: Simplemente use la API de la etiqueta de audio HTML5, así;

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

creo que el archivo de sonido sólo puede ser OGG (Vorbis) o mp3.

Cuestiones relacionadas