Wie sieht die Javascript-API aus, um zu prüfen, ob gerade ein html5-Audioelement abgespielt wird?
function isPlaying(audelem) { return !audelem.paused; }
Das Audio-Tag hat eine paused
-Eigenschaft. Wenn es nicht pausiert ist, wird es abgespielt.
Sie können die Dauer überprüfen. Es wird abgespielt, wenn die Dauer mehr als 0 Sekunden beträgt und es nicht pausiert wird.
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);
Sollte den Trick tun.
Während ich zu diesem Thread wirklich spät komme, verwende ich diese Implementierung, um herauszufinden, ob der Sound abgespielt wird:
service.currentAudio = new Audio();
var isPlaying = function () {
return service.currentAudio
&& service.currentAudio.currentTime > 0
&& !service.currentAudio.paused
&& !service.currentAudio.ended
&& service.currentAudio.readyState > 2;
}
Ich denke, die meisten Flags auf dem Audio-Element liegen auf der Hand, abgesehen vom Ready-Status, den Sie hier lesen können: MDN HTMLMediaElement.readyState .
Verwenden Sie diese Funktion! Die Audiowiedergabe wird nicht ausgeführt, wenn die Position Anfang oder Ende ist
function togglePause() {
if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
myAudio.play();
} else {
myAudio.pause();
}
}
Um zu prüfen, ob Audio wirklich abgespielt wird, insbesondere wenn Sie einen Stream haben, müssen Sie audio.played.length
auf 1
überprüfen. Es wird nur 1 sein, wenn der Ton wirklich beginnt. Ansonsten ist 0
. Es ist mehr wie ein Hack, aber das funktioniert auch in mobilen Browsern wie Safari und Chrome.
sie können das Onplay-Ereignis verwenden.
var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};
oder
var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };