Как я могу определить, когда у пользователя X секунд с конца видео? - PullRequest
1 голос
/ 24 октября 2019

Мне нужно определить, когда видео занимает 30 секунд после окончания общего количества. Например, если мое видео имеет длину 1 м35 с, я хочу вызвать событие, когда оно достигает 1 м 05 с.

ОБНОВЛЕНИЕ

Я разработал способ запуска событияв любой точке более 30 секунд от конца, то есть 30 секунд, 29 секунд, 28 секунд и так далее. Проблема в том, что приведенный ниже код запускается несколько раз в секунду, но я хочу, чтобы это событие происходило только один раз, если оно происходит при -30 с, -22 с или -15 с.

var video = $('#video');

function func() {
    if ( video[0].currentTime > video[0].duration-30 ) {
        console.log('You are less than 30 seconds from the end!');
    }
}

video.on('timeupdate', function() {
    func();
});

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Вы можете использовать логическую переменную события конца файла - eofevent.

Логика: сбросить эту переменную при каждом запуске воспроизведения. Используйте его как флаг, после срабатывания не вызывайте func () снова.

var video = $('#video');
var eofevent = false; 


function func() {
    if ( video[0].currentTime > video[0].duration-30 ) {
        console.log('You are less than 30 seconds from the end!');
        eofevent = true;
    }
}

video.on('timeupdate', function() {
    if( eofevent == false )
       func();
});

video.on('play', function() {
     if ( video[0].currentTime < video[0].duration ) {
        console.log('on Playing Reset!');
        eofevent = false;
    }
});

video.on('playing', function() {
    if ( video[0].currentTime < video[0].duration ) {
        console.log('on Playing Reset!');
        eofevent = false;
    }
});

Примечание: я не кодировщик jquery / javascript, пожалуйста, извините за любую синтаксическую ошибку.

0 голосов
/ 24 октября 2019

Я бы сказал, что вам нужно отменить привязку к событию timeupdate, как только вы достигнете своей цели:

var video = $('#video');

function func() {
    if ( video[0].currentTime > video[0].duration-30 ) {
        console.log('You are less than 30 seconds from the end!');
        video.off('timeupdate'); // <--
    }
}

video.on('timeupdate', function() {
    func();
});

(я не проверял код)

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