160 votes

HTML5 vérifie si l'audio est en cours de lecture ?

Quelle est l'api javascript pour vérifier si un élément audio html5 est en cours de lecture ?

0 votes

203voto

Niet the Dark Absol Points 154811
function isPlaying(audelem) { return !audelem.paused; }

La balise Audio possède un paused propriété. S'il n'est pas en pause, alors il est en cours de lecture.

0 votes

Comme il n'y a pas d'arrêt, c'est une solution propre.

0 votes

Puis paused est vrai et donc isPlaying() retourne faux.

44 votes

C'est une mauvaise réponse. Je suis en train de travailler avec, et avant le premier démarrage, .paused est faux.

58voto

Maxali Points 148

Vous pouvez vérifier la durée. Il est en cours de lecture si la durée est supérieure à 0 seconde 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.

}

2 votes

Personnellement, je crois que !myAudio.paused||!myAudio.currentTime ferait un meilleur travail.

15 votes

@m93a tu ne veux pas dire !myAudio.paused || myAudio.currentTime ?

5 votes

Oui, devrait être !myAudio.paused || myAudio.currentTime . Il semble qu'il n'ait jamais répondu...

22voto

Hassan Mahmud Points 219

Bien que je sois vraiment en retard sur ce sujet, j'utilise cette mise en œuvre 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 indicateurs de l'élément audio sont évidents, à l'exception de l'état prêt que vous pouvez lire ici : MDN HTMLMediaElement.readyState .

0 votes

Ne fonctionne pas si l'audio a été mis en pause automatiquement par iOS lors du verrouillage.

13voto

projectxmatt Points 113
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false); 

Ça devrait faire l'affaire.

7voto

Nidlol Masyhud Points 51

Essayez cette fonction ! La lecture audio ne sera 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();
     }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X