Как вы обнаруживаете, когда звук HTML5 закончился (более одного раза)? [Дубликат]

19

У меня проблема с обнаружением, когда тег закончен, воспроизводя mp3. Когда я делаю что-то вроде этого:

     myAudio.addEventListener("ended", function() 
     {
          alert("ended");
     });

Это происходит только при первом воспроизведении звука. Когда я снова воспроизвожу аудио, ничего не происходит. То же самое происходит, когда я использую метод onended=doThis(); . Я слышал, может быть, есть способ сделать это в jQuery, но я не смог заставить его работать. Я также слышал, что может быть способ исправить это, изменив аудио div id при каждом воспроизведении mp3, но это не работает для меня, потому что мне нужно, чтобы id остался прежним.

Кто-нибудь получил какие-либо идеи?

    
задан evenodd 19.06.2012 в 16:50
источник
  • jsfiddle.net/MvzFN/2 (см. / прослушивание в хроме): в этой скриптовой игре событие, похоже, всегда срабатывает –  fcalderan 19.06.2012 в 16:58
  • Попробуйте создать звуковой тег в html, а не в javascript. Он работает для вас еще? –  evenodd 19.06.2012 в 17:07
  • да, он все еще работает: jsfiddle.net/MvzFN/3 –  fcalderan 19.06.2012 в 17:13
  • @AndersonGreen это не дубликат, другой ответ показывает метод, который OP уже использует и запрашивает помощь по конкретному поведению –  Felipe Sabino 22.02.2013 в 23:33

1 ответ

31

Событие ended создается на основе атрибута .currentTime . Ссылка

Итак, все, что вам нужно сделать, это снова установить .currentTime .

myAudio.addEventListener("ended", function(){
     myAudio.currentTime = 0;
     console.log("ended");
});
    
ответ дан Cristi Pufu 19.06.2012 в 17:13
  • Вот и все! Но мне также пришлось сделать паузу до этого, потому что иначе это будет просто бесконечный цикл –  evenodd 19.06.2012 в 17:51