Estoy tratando de reproducir un archivo de audio cuando hago clic en el botón, pero no funciona, mi código html es:
<html>
<body>
<div id="container">
<button id="play">
Play Music
</button>
</div>
</body>
</html>
mi JavaScript es:
$('document').ready(function () {
$('#play').click(function () {
var audio = {};
audio["walk"] = new Audio();
audio["walk"].src = "http://www.rangde.org/static/bell-ring-01.mp3"
audio["walk"].addEventListener('load', function () {
audio["walk"].play();
});
});
});
También he creado un violín para eso.
javascript
jquery
html
Suresh Pattu
fuente
fuente
Respuestas:
¿Qué enfoque?
Puede reproducir audio con
<audio>
etiqueta o<object>
o<embed>
. Lazy loading (cargar cuando lo necesite) el sonido es el mejor enfoque si su tamaño es pequeño. Puede crear el elemento de audio dinámicamente, cuando está cargado puede iniciarlo.play()
y pausarlo.pause()
.Cosas que usamos
Usaremos
canplay
evento para detectar que nuestro archivo está listo para ser reproducido.No hay
.stop()
función para elementos de audio. Solo podemos pausarlos. Y cuando queremos empezar desde el principio del archivo de audio cambiamos su.currentTime
. Usaremos esta línea en nuestro ejemploaudioElement.currentTime = 0;
. Para lograr la.stop()
función, primero pausamos el archivo y luego restablecemos su tiempo.Es posible que deseemos saber la longitud del archivo de audio y el tiempo de reproducción actual. Ya aprendimos
.currentTime
arriba, para conocer su longitud usamos.duration
.Guía de ejemplo
timeupdate
evento para actualizar la hora actual cada vez que.currentTime
cambia el audio .canplay
evento para actualizar la información cuando el archivo está listo para reproducirse.fuente
ended
evento que reproduce el audio desde el principio.No funciona
$("#myAudioElement").play()
como cabría esperar. La razón oficial es que incorporarlo a jQuery agregaría unplay()
método a cada elemento, lo que causaría una sobrecarga innecesaria. Entonces, en su lugar, debe referirse a él por su posición en la matriz de elementos DOM con los que está recuperando$("#myAudioElement")
, también conocido como 0.Esta cita es de un error que se envió al respecto , que se cerró como "característica / no se corrige":
fuente
Para cualquier otra persona que lo siga, simplemente tomé la respuesta de Ahmet y actualicé el jsfiddle del autor de la pregunta original aquí , sustituyendo:
para
enlazando en un mp3 disponible gratuitamente fuera de la web. ¡Gracias por compartir esta sencilla solución!
fuente
Aquí tengo una solución agradable y versátil con un respaldo:
Después de eso, puede inicializar tantos audio como desee:
Ahora puede acceder al elemento de audio inicializado donde quiera con llamadas a eventos simples como
fuente
Demostración de JSFiddle
Esto es lo que uso con JQuery:
fuente
Qué pasa:
fuente