Quelle est l'api javascript pour vérifier si un élément audio html5 est en cours de lecture?
function isPlaying(audelem) { return !audelem.paused; }
La balise audio a une propriété paused
. Si ce n'est pas en pause, alors il joue.
Vous pouvez vérifier la durée. Il joue si la durée est supérieure à 0 secondes et s'il n'est pas en pause.
var myAudio = document.getElementById('myAudioID');
if (myAudio.duration > 0 && !myAudio.paused) {
//Its playing...do your job
} else {
//Not playing...maybe paused, stopped or never played.
}
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false);
Devrait faire l'affaire.
Alors que je suis vraiment en retard sur ce fil, j'utilise cette implémentation pour savoir si le son est joué:
service.currentAudio = new Audio();
var isPlaying = function () {
return service.currentAudio
&& service.currentAudio.currentTime > 0
&& !service.currentAudio.paused
&& !service.currentAudio.ended
&& service.currentAudio.readyState > 2;
}
Je pense que la plupart des drapeaux sur l'élément audio sont évidents, mis à part l'état prêt que vous pouvez lire ici: MDN HTMLMediaElement.readyState .
Essayez cette fonction! La lecture du son ne serait pas exécutée si la position est le début ou la fin.
function togglePause() {
if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
myAudio.play();
} else {
myAudio.pause();
}
}
Pour vérifier si l'audio commence réellement à jouer, surtout si vous avez un flux, vous devez cocher audio.played.length
à 1
. Ce ne sera que 1 si l'audio est vraiment commencer sons. Sinon, ce sera 0
. Cela ressemble plus à un hack, mais cela fonctionne toujours, même dans les navigateurs mobiles, comme Safari et Chrome.
vous pouvez utiliser l'événement onplay.
var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};
ou
var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };