2011-07-05 18 views
5

Estoy tratando de reproducir una pista de audio HTML5 unos segundos después de que la página se cargó con la función de JavaScript .play().Activación de una pista de audio HTML5 para reproducir cada vez que ha cargado

A veces, cuando se dispara la carga de audio lentamente, y .play() cuando el jugador se ve así: enter image description here

El audio no se reproduce cuando se amortiguada.

A veces, cuando el audio se carga rápidamente y el reproductor se ve así, .play() funciona bien.

enter image description here

¿Cuál es la forma más rápida de solucionar este problema? (¿Utilizando un oyente? Estoy esperando una función 'reproducir cuando está cargado').

+0

Qué pasa con el 'autoplay' atributo? http://www.w3.org/TR/html5/video.html#attr-media-autoplay – RoToRa

+0

No, tiene que activarse con JavaScript, me temo. Gracias – mradbourne

Respuesta

4

Esto debería estar trabajando:

<script language="JavaScript" type="text/javascript"> 
    var myAudio = document.getElementById('audio1') 
    myAudio.oncanplaythrough = function() {this.play();} 
</script> 

<audio id="audio1" controls preload="auto" /> 
<audio id="audio2" controls preload="auto" oncanplaythrough="this.play();" /> 
1

Si la carga es exitosa, ya sea usando el atributo src o usando elementos fuente, entonces a medida que se descargan los datos, se disparan los eventos de progreso. Cuando se han cargado suficientes datos para determinar las dimensiones y la duración del video, se desencadena un evento de metadatos cargados. Cuando se han cargado suficientes datos para representar un marco, el evento de datos cargados se dispara. Cuando es lo suficiente bueno de datos se ha cargado a poder jugar un poco del video, un evento canplay se dispara. Cuando el navegador determina que puede reproducir todo el video sin detenerse para descargar más datos, se desencadena un evento canplaythrough; esto es también cuando el video comienza a reproducirse si tiene un atributo de reproducción automática.

Nota: Opera 10.50 no tratar de determinar cuando tiene datos suficientes para poder jugar a través, pero en su lugar sólo dispara canplay y canplaythrough al mismo tiempo. Esto probablemente será arreglado en una versión futura.

Si el navegador decide detener la descarga de datos para ahorrar ancho de banda, se activará un evento suspendido. Si el servidor deja de dar datos (sin cerrar la conexión) por alguna razón, luego de tres segundos el navegador activa un evento detenido. Si el navegador está jugando más rápido que el servidor está sirviendo de datos, o en la búsqueda de las causas del navegador que esperar a que la descarga de datos, un evento de espera se dispara.

Nota: Opera 10.50 aún no suspende las descargas y no activa el evento detenido.

Si usted quiere tener su botón de reproducción deshabilitado hasta que el vídeo es capaz de jugar, puede activarlo en el caso canplay:

<input type="button" value="Play" id="playpause" onclick="playOrPause()" disabled> 
video.oncanplay = function(e) { 
    playpause.disabled = false; 
} 

Source.

+0

¡Gracias Simon West de Reading! – mradbourne

0

puede ajustar:

<script> 
var myAudio = document.getElementById('audio1'); 
myAudio.setAttribute('autoplay', 'autoplay');</script> 
Cuestiones relacionadas