Is a jquery callback available after .play() when using <audio>?

前端 未结 4 1335
死守一世寂寞
死守一世寂寞 2020-12-20 03:49

Guys how do I play an mp3 file and then another once the first has finished?

I have tried the following without success..

$(\'#file1)[0].play( functi         


        
相关标签:
4条回答
  • 2020-12-20 04:05

    I used @blasteralfred's code to create a function to play a indefinite series of sound files using jQuery:

    function playSounds(soundFileIds) {
      if (soundFileIds instanceof Array) {
        var soundFileId = soundFileIds.shift();
        playSound(soundFileId);
        $(soundFileId).bind('ended', function() {
          playSounds(soundFileIds);
        });
      } else {
        playSound(soundFileIds);
      }
    }
    

    The conditional test for an array allows me to backport this to my existing code that calls this function with just a string. Thanks!

    0 讨论(0)
  • 2020-12-20 04:13

    You are not calling a jQuery method to begin with.

    You could attach an event handler to the "onended" event:

    var file = $("#file1");
    
    file.on( "ended", function(){
        $("#file2")[0].play();
    });
    
    file[0].play();
    
    0 讨论(0)
  • 2020-12-20 04:19

    You need to listen to the onended event.

    0 讨论(0)
  • 2020-12-20 04:26

    According to W3Schools, you can use the onended event to detect if the HTML5 audio has finished playing.

    In jQuery:

    $("#player").bind('ended', function(){
        // done playing
        alert("Player stopped");
    });
    

    For a demonstration see: http://jsfiddle.net/9PCEf/2/

    You can do the rest after audio playing finished.

    0 讨论(0)
提交回复
热议问题