Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou desenvolvendo um site de vinhetas, mas estou com o seguinte problema. Quando o cliente clica em um áudio ele toca normalmente, mas quando clica em um segundo com o primeiro ainda em execução, ficam os dois áudios executando ao mesmo tempo no sit.
Gostaria que um executasse por vez.
Lembrando que os áudios estão inseridos separadamente.
Somente complementando @Omar~ na verdade tem uma forma de resetar o audio mantendo os elementos usando a propriedade currentTime = 0
no caso seria apenas uma linha adicionada ao seu método.
function tocarAudio(e) {
var alvo = (e.target).dataset.alvo;
if (variavelGlobal) {
document.getElementById(variavelGlobal).pause();
document.getElementById(variavelGlobal).currentTime = 0;
}
document.getElementById(alvo).play();
variavelGlobal = alvo;
}
link JsBin:[https://jsbin.com/liyerayewi/edit?html,js,output](https://jsbin.com/liyerayewi/edit?html,js,output)
Use uma variável global para identificar o audio em execução.
Toda vez que um novo audio é tocado pegue a informação da var global e dar pause no que estiver tocando e play na atual.
Vejamos um exemplo:
Spoiler