Javascript onended определяет конец видео

Все в моем коде работает. Он просто не переключается на следующую песню / видео после окончания текущей. Я пытался добавить onended обработчик события (в теге и в JavaScript), но не удалось. Я также попробовал jQuery, но это не сработало. По некоторым причинам это не меняет песни в конце песни. Вместо этого он будет воспроизводить одну и ту же песню снова и снова.

<video id="vid" src="main/" playsinline autoplay loop>
  <script>
   var video = document.currentScript.parentElement;
   video.volume = 0.1;  
   var lastSong = null;
   var selection = null;
   var playlist = ["main/songn.mp4", "main/songl.mp4", "/main/songt.mp4", "/main/songf.mp4"]; // List of Songs
   var video = document.getElementById("vid"); 
   video.autoplay=true;
   video.addEventListener("ended", selectRandom); 

   function selectRandom(){
    while(selection == lastSong){ 
     selection = Math.floor(Math.random() * playlist.length);
    }
    lastSong = selection; 
    video.src = playlist[selection]; 

   }

   selectRandom(); 
   video.play();

  </script>
</video>

1 ответ

Решение

Вам просто нужно удалить loop параметр из тега video, если вы хотите вызвать конечное событие ( doc):

<video id="vid" src="main/" playsinline autoplay>

(Ваш код будет обрабатывать цикл, загружая новую песню после ее завершения.)

Кстати, держать var video = document.getElementById("vid"); ссылаться на ваш <video> тег, он короче и чище, чем первое объявление.

Другие вопросы по тегам