javascript - Hvordan finne ut om et
Jeg ser at MediaElement-grensesnittet eksponerer attributter som paused, seeking og ended. Men det som mangler fra listen, er playing.
Jeg vet at det finnes playing-hendelser som utløses når et element begynner å spille, og timeupdate-hendelser som utløses periodisk mens det spilles, men jeg leter etter en måte å avgjøre om en video spilles akkurat nå. Finnes det en enkel måte å finne dette ut på?
Det nærmeste jeg har kommet er:
!(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA)
Svar #1
Det finnes ingen spesifikk egenskap som vil avsløre om en MediaElement spiller for øyeblikket. Du kan imidlertid utlede dette fra tilstanden til de andre egenskapene. Hvis:
currentTimeer større enn null, ogpauseder false, ogendeder falsk
da spiller elementet for øyeblikket.
Du må kanskje også sjekke readyState for å se om mediet stoppet på grunn av feil. Kanskje noe sånt:
const isVideoPlaying = video => !!(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2);
Svar #2
Det har gått lang tid, men her er et flott tips. Du kan definere .playing som en egendefinert egenskap for alle medieelementer og få tilgang til den når det trengs. Her er hvordan:
Object.defineProperty(HTMLMediaElement.prototype, 'playing', {
get: function(){
return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
}
})
Nå kan du bruke det på <video> eller <audio>-elementer slik:
if(document.querySelector('video').playing){ // checks if element is playing right now
// Do anything you want to
}
Svar #3
var video = $('selector').children('video');
var videoElement = video.get(0);
if (!videoElement.paused) {}
En måte å gjøre det på ved å bruke Jquery
