Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML5 audio start over

Tags:

Having

var audio = new Audio("click.ogg") 

I play the click sound when needed by

audio.play() 

However, sometimes user is so fast that a browser does not play the audio at all (probably when still playing a previous play request). Is this issue related to preload?

How can I force a browser to stop playing and start over? There is no stop, just pause in HTML5 audio component, correct? What workaround can be used here?


Update - Additional note:

I have multiple checkbox-like div elements with a touchend event. When such event is triggered, the elements visually change, a sound is played and an internal variable is set accordingly. If user tap on these elements slowly, everything works nicely. If tap fast, the sound is often completely skipped...

like image 277
Ωmega Avatar asked Oct 21 '12 22:10

Ωmega


2 Answers

You can try this code:

audio.currentTime = 0; audio.play(); 

It looks like this is the simplest solution.

like image 70
Maciej Bukowski Avatar answered Sep 26 '22 01:09

Maciej Bukowski


This is the code I've been using and it's working for me:

            if(audioSupport.duration > 0 && !audioSupport.paused){                  //already playing                 audioSupport.pause();                 audioSupport.currentTime = 0;                 audioSupport.play();              }else{                  //not playing                  audioSupport.play();                  } 
like image 30
Drew Avatar answered Sep 25 '22 01:09

Drew