Aquí hay una JSLinted, discreto Javascript ejemplo demostrando cómo manejar y utilizar el ended
mediaevent. En su situación particular, activaría la reproducción del segundo archivo de audio en su controlador de eventos ended
.
Puede usar el siguiente código o run the test fiddle.
Haga clic en un elemento de la lista de reproducción para comenzar la reproducción. Después de que termina un audio, comenzará el siguiente.
marcado: (nótese la evasión deliberada de espacios en blanco entre <li>
elementos - esto es simplificar recorrer el DOM con nextSibling
.)
<audio id="player"></audio>
<ul id="playlist"><li data-ogg="http://www.lunerouge.org/sons/sf/LRWeird%201%20by%20Lionel%20Allorge.ogg">Space 1</li><li data-ogg="http://www.lunerouge.org/sons/sf/LRWeird%202%20by%20Lionel%20Allorge.ogg">Space 2</li><li data-ogg="http://www.lunerouge.org/sons/sf/LRWeird%203%20by%20Lionel%20Allorge.ogg">Space Lab</li></ul>
<button id="stop">Stop</button>
guión:
// globals
var _player = document.getElementById("player"),
_playlist = document.getElementById("playlist"),
_stop = document.getElementById("stop");
// functions
function playlistItemClick(clickedElement) {
var selected = _playlist.querySelector(".selected");
if (selected) {
selected.classList.remove("selected");
}
clickedElement.classList.add("selected");
_player.src = clickedElement.getAttribute("data-ogg");
_player.play();
}
function playNext() {
var selected = _playlist.querySelector("li.selected");
if (selected && selected.nextSibling) {
playlistItemClick(selected.nextSibling);
}
}
// event listeners
_stop.addEventListener("click", function() {
_player.pause();
});
_player.addEventListener("ended", playNext);
_playlist.addEventListener("click", function (e) {
if (e.target && e.target.nodeName === "LI") {
playlistItemClick(e.target);
}
});
Has probado esto: http://stackoverflow.com/questions/7652031/how-to-find-audio-is-paused-or-track-finished-in-jquery-html5-audio – Laszlo
sí, que no por demora(), lo que quiero decir es ¿cómo podría el segundo archivo de audio reproducirse después de que termine el primero, –