El audio se reproduce cuando el usuario interactúa con la ventana; sin embargo, cuando el audio finaliza, no registra "audio finalizado".
let audio = new Audio(); window.onclick = () => { if (audio.paused) pickMusic().play(); }; audio.onended = () => { console.log("audio ended"); }; function pickMusic() { switch (Math.floor(Math.random() * 1)) { case 0: return (audio = new Audio("/music/gorp.mp3")); break; case 1: return (audio = new Audio("/music/gorp.mp3")); break; } } <p>Click anywhere!</p>Cuando llame a new Audio() , anulará el audio anterior que ya está adjunto con un evento onended .
En este caso, siempre que llame a new Audio() , también debe inicializar el evento onended una vez más
let audio = new Audio() window.onclick = () => { if (audio.paused) pickMusic().play(); }; function pickMusic() { switch (Math.floor(Math.random() * 1)) { case 0: audio = new Audio("http://commondatastorage.googleapis.com/codeskulptor-assets/jump.ogg") audio.onended = () => { console.log("audio ended"); }; return audio; case 1: audio = new Audio("http://commondatastorage.googleapis.com/codeskulptor-assets/week7-brrring.m4a") audio.onended = () => { console.log("audio ended"); }; return audio; } } <p>Click anywhere!</p>