如何判断<video>元素是否正在播放?
我看到MediaElement接口公开了像paused
, seeking
和ended
属性。 然而,从列表中缺less的是playing
。
我知道当一个元素开始播放时会playing
事件 ,在playing
时会定期timeupdate
事件事件,但是我正在寻找一种方法来确定video是否正在播放。 有一个简单的方法来确定这一点?
我得到的最接近的是:
!(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA)
没有特定的属性会显示MediaElement
是否正在播放。 但是,您可以从其他属性的状态中推断出这一点。 如果:
-
currentTime
大于零,并且 -
paused
是错误的 -
ended
是错误的
那么元素正在播放。
您可能还需要检查readyState
以查看介质是否由于错误而停止。
这已经很长时间了,但这里有一个很棒的提示。 您可以将.playing
定义为所有媒体元素的自定义属性,并在需要时进行访问。 这里是如何:
Object.defineProperty(HTMLMediaElement.prototype, 'playing', { get: function(){ return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2); } })
现在,您可以在<video>
或<audio>
元素上使用它:
if(document.querySelector('video').playing){ // checks if element is playing right now // Do anything you want to }
var video = $('selector').children('video'); var videoElement = video.get(0); if (!videoElement.paused) {}
一种使用Jquery的方法
在这里看到我的回复: HTML5video标签,javascript来检测播放状态?
基本上,如前所述,没有单一的财产来检查,但根据规范,这是一个条件的组合。