Я работаю с аудиоплеер HTML5. Я реализую плейлист. Я использую действие «закончено» для воспроизведения следующего аудиофайла. Но, в конце медиафайла, событие «закончился» запускается более одного раза. (. Поскольку сообщение я вхожу появляется более одного раза)HTML5 AudioPlayer Событие Действие «Завершено» вызывает больше одного раза
Это мой слушатель событий:
//Event Listener
function addPlayerListener() {
console.log("Recording Index: "+combinedSessionIndex);
var audio = document.getElementById("playarea");
audio.addEventListener('ended', function() {
sessionsToPlay = $("#audio_files").val().split(',');
console.log ("In Recording End Event Listener...!!!"+combinedSessionIndex);
//It Shows Length '1' not '0'
if (sessionsToPlay.length == 1) {
console.log("Returned Due to Session To Play length..!!!")
return;
}
//As CombinedSessionIndex Starts with 1
if (combinedSessionIndex == sessionsToPlay.length) {
console.log("Returned Due to All Session To Play Got Finish..!!!")
$("#audio_files").val("");
sessionsToPlay = [];
combinedSessionIndex = 0;
return;
}
var filePath = '${properties["RECORDED_SESSION_RETREIVAL_PATH"]}';
filePath = filePath + sessionsToPlay[combinedSessionIndex] + ".mp4";
combinedSessionIndex++;
audio.src = filePath;
audio.play();
}, false);
}
Таким образом, когда заканчивается конкретный медиа-файл, он пропустит следующий медиа-файлы и начать играть в следующем (после пропуская 1,2) файл. Для каждого пропущенного медиафайла элемент управления приходит в прослушиватель событий, который показывает, что прослушиватель событий повторно вызывает вызов, когда заканчивается один вызов.
В первый раз, когда я играть аудиофайл этого код:
//PlayBack Session
function play(data) {
//Just to deal with a scenario that when we play a combined session and in the mean while we start listening any other single
//session, then after completion of this single session, remaining previous combined session should not resume.
//console.log("Re-setting Player ...!!!");
//$("#audio_files").val("");
//sessionsToPlay = [];
//combinedSessionIndex = 0;
var filePath = '${properties["RECORDED_SESSION_RETREIVAL_PATH"]}';
filePath = filePath + data + ".mp4";
console.log("filePath: " + filePath);
if (data == null || data == "") {
alert("Nothing to Play ...!!!");
return;
}
$("#playarea").attr({
"src": filePath,
"autoplay": "autoplay"
})
}
И после этого, когда это закончится, дополнительные клипы играли с помощью «бессрочный» события слушателя.
Я не могу найти причину этого. Пожалуйста, направляйте меня, если я делаю что-то неправильно?
Спасибо заранее:
Если вы изменили обработчик событий на одну строку кода, которая вызывает 'console.log ('ENDED event handled');' и удалить все остальные коды, вы все равно получаете несколько событий? Мне интересно, что что-то, что вы делаете внутри обработчика событий, вызывает новое завершенное событие, например, если аудиофайл не был найден или был невероятно коротким или какой-либо другой подобной проблемой? – Fenton
Но код для воспроизведения следующего медиафайла останется там? –
Отнесите это сейчас, потому что мы хотим проверить, если вы получаете несколько событий без какого-либо из этого кода. – Fenton