我正在使用HTML5音频播放器。我正在实现播放列表。我正在使用'结束'事件动作播放下一个音频媒体文件。但是,在媒体文件的最后,'结束了'事件被解雇了一次以上。 (因为我记录的消息多出一次。)
这是我的事件监听器:
//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"
})
}
然后,当此结束时,使用“结束”播放更多剪辑。事件监听。
我无法找到原因。如果我做错了什么请指导我?
提前致谢:)
答案 0 :(得分:0)
啊,我的坏。我正在注册相同的事件监听器'结束'经常(每次用户按下播放按钮,而它应该只是一次)。这就是为什么我会结束'事件不止一次。它实际上生成了'结束''我注册'结束'的事件行动次数事件
你认为它不应该只考虑一次吗?因为我们的目的只是在媒体文件结束时收到通知。虽然我们多次注册,但没有多次通知的逻辑。