Как узнать, играет ли элемент <video>в данный момент? - PullRequest
65 голосов
/ 29 июля 2011

Я вижу, что интерфейс MediaElement предоставляет такие атрибуты, как paused, seeking и ended. Однако в списке отсутствует playing.

Я знаю, что есть playing события , которые срабатывают, когда элемент начинает воспроизведение, и timeupdate события события периодически во время игры, но я ' ищу способ определить, воспроизводит ли видео прямо сейчас . Есть ли простой способ определить это?

Самое близкое, что у меня есть:

!(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA)

Ответы [ 4 ]

74 голосов
/ 30 июня 2015

Прошло много времени, но вот отличный совет. Вы можете определить .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
}
62 голосов
/ 29 июля 2011

Нет определенного атрибута, который бы указывал, играет ли MediaElement в данный момент. Однако вы можете вывести это из состояния других атрибутов. Если:

  • currentTime больше нуля, а
  • paused ложно, а
  • ended неверно

тогда элемент в данный момент играет.

Вам также может понадобиться проверить readyState, чтобы увидеть, остановился ли носитель из-за ошибок. Может быть, что-то подобное:

const isVideoPlaying = video => !!(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2);
8 голосов
/ 31 января 2013
var video = $('selector').children('video');

var videoElement = video.get(0);

if (!videoElement.paused) {} 

Один из способов сделать это с помощью Jquery

2 голосов
/ 30 июля 2011

См. Мой ответ здесь: HTML5-видео тег, javascript для определения статуса воспроизведения?

По сути, как уже было сказано, нет ни одного свойства для проверки, но согласно спецификации это комбинацияусловий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...