Запуск событий с помощью обработчика из видеоплеера html5 с JQuery - PullRequest
0 голосов
/ 10 мая 2019

Я использую этот метод (найден в переполнении стека) для выполнения события при очистке видео HMTL: Запуск событий из html5-видеоплеера с JQuery

работает отлично. Однако я не знаю, как вызвать другое событие при очистке временной шкалы видео назад к предыдущему (более раннему) времени. Я хотел бы отключить событие и, возможно, добавить другое событие, когда пользователь достигнет предыдущего исходного времени.

Я использую этот метод для «очистки» временной шкалы:

var windowwidth = $(window).width()-20;

var scrollpos = window.pageXOffset/200;
var targetscrollpos = scrollpos;
var accel = 0;

// ---- Values you can tweak: ----
var accelamount = 0.1; //How fast the video will try to catch up with the target position. 1 = instantaneous, 0 = do nothing.

// pause video on load
vid.pause();


window.onscroll = function(){
    //Set the video position that we want to end up at:
    targetscrollpos = window.pageXOffset/200;   
};

setInterval(function(){  
      //Accelerate towards the target:
      scrollpos += (targetscrollpos - scrollpos)*accelamount;
      //update video playback
      vid.currentTime = scrollpos;
     vid.pause();
}, 60);

и этот код из предыдущего вопроса о переполнении стека для запуска события (событий)

    $(".boxB").animate({ marginLeft:'0px'},400);
    $(".boxA").animate({ width:'620px'}, 400);
}

var runAtTime = function(handler, time) {
     var wrapped = function() {
         if(this.currentTime >= time) {
             $(this).off('timeupdate', wrapped);
             return handler.apply(this, arguments);
        }
     }
    return wrapped;
};

$('#v0').on('timeupdate', runAtTime(myHandler, 3.5)); 

Работающая версия существует здесь: http://www.mediaflash.ca/swipe_video_timeline/index.html

Функция будет работать, только если вы используете мышь с колесиком прокрутки и прокручиваете влево и вправо или проводите влево / вправо на устройстве iOS.

1 Ответ

0 голосов
/ 11 мая 2019

Насколько я знаю, не существует отдельного события, доступного для прокрутки вперед / назад.

Что вы можете сделать, чтобы проверить, прокручивала ли пользователь назад, чтобы сохранить последний раз и сравнить его с новым временем очистки, например:

var m_lastVideoTime = 0;//global scope

var runAtTime = function(handler, time) {

     var wrapped = function() {
         if (m_lastVideoTime < this.currentTime){
           //user scrolled back in time, do what you like here
         }
         m_lastVideoTime = this.currentTime;
         if(this.currentTime >= time) {
             //time exceeded specified value (3.5)
             $(this).off('timeupdate', wrapped);
             return handler.apply(this, arguments);
        }
     }
    return wrapped;
};

Ваше текущее имя функции runAtTime:немного вводит в заблуждение, потому что он запускается всякий раз, когда время видео обновляется.Тем не менее, он уже отключается, когда время 3,5 было превышено.

С этого момента функция runAtTime в настоящее время никогда больше не вызывается, пока страница не будет перезагружена, поскольку вы присоединяете ее только один раз с помощью функции .on jquery.

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