Estou tentando reproduzir um arquivo de áudio quando clico no botão, mas não está funcionando, meu código html é:
<html>
<body>
<div id="container">
<button id="play">
Play Music
</button>
</div>
</body>
</html>
meu JavaScript é:
$('document').ready(function () {
$('#play').click(function () {
var audio = {};
audio["walk"] = new Audio();
audio["walk"].src = "http://www.rangde.org/static/bell-ring-01.mp3"
audio["walk"].addEventListener('load', function () {
audio["walk"].play();
});
});
});
Eu criei um Fiddle para isso também.
javascript
jquery
html
Suresh Pattu
fonte
fonte
Respostas:
Qual abordagem?
Você pode reproduzir áudio com
<audio>
tag ou<object>
ou<embed>
. Carregamento lento (carregue quando você precisar) o som é a melhor abordagem se seu tamanho for pequeno. Você pode criar o elemento de áudio dinamicamente, quando estiver carregado, você pode iniciá-lo.play()
e pausá-lo.pause()
.Coisas que usamos
Usaremos o
canplay
evento para detectar se nosso arquivo está pronto para ser reproduzido.Não há
.stop()
função para elementos de áudio. Nós podemos apenas pausá-los. E quando queremos começar do início do arquivo de áudio, nós o alteramos.currentTime
. Usaremos essa linha em nosso exemploaudioElement.currentTime = 0;
. Para realizar a.stop()
função, primeiro pausamos o arquivo e, em seguida, redefinimos seu tempo.Podemos querer saber a duração do arquivo de áudio e o tempo de reprodução atual. Já aprendemos
.currentTime
acima, para aprender seu comprimento usamos.duration
.Guia de exemplo
timeupdate
evento para atualizar a hora atual sempre que o áudio.currentTime
muda.canplay
evento para atualizar as informações quando o arquivo está pronto para ser reproduzido.fonte
ended
evento que reproduz o áudio desde o início.Não funciona
$("#myAudioElement").play()
como você esperaria. O motivo oficial é que incorporá-lo ao jQuery adicionaria umplay()
método a cada elemento, o que causaria sobrecarga desnecessária. Portanto, em vez disso, você deve se referir a ele por sua posição na matriz de elementos DOM com os quais você está recuperando$("#myAudioElement")
, também conhecido como 0.Esta citação é de um bug que foi enviado sobre isso , que foi fechado como "feature / wontfix":
fonte
Para qualquer outra pessoa acompanhando, simplesmente peguei a resposta de Ahmet e atualizei o jsfiddle do autor da pergunta original aqui , substituindo:
para
vinculando em um mp3 disponível gratuitamente na web. Obrigado por compartilhar a solução fácil!
fonte
Tenho aqui uma solução agradável e versátil com um substituto:
Depois disso, você pode inicializar quantos áudios quiser:
Agora você pode alcançar o elemento de áudio inicializado onde quiser com chamadas de eventos simples como
fonte
Demonstração JSFiddle
Isso é o que eu uso com JQuery:
fonte
A respeito:
fonte