Собственный видеоплеер: удаление обработчиков событий из нажатий клавиш - PullRequest
0 голосов
/ 14 июня 2019

Я создаю веб-платформу для воспроизведения видео, и мне нужен полный контроль над поведением воспроизведения тегов видео.В частности, я хочу реализовать свою собственную функцию очистки.Для этого я хочу отключить нативное поведение, чтобы пропустить воспроизведение видео-тегов в фокусе, нажимая «стрелка влево», «стрелка вправо» и «пробел», и сделать свой собственный контроль клавиатуры.

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

window.addEventListener('keyup', this.keyboardControl);

Чтобы остановить фокусировку видеопроигрывателя и реагировать на нажатия клавиш самостоятельно, я попытался переписать обработчики следующим образом:

let video = document.getElementById('video');
video.addEventListener("keydown", function(event){
  event.preventDefault();
});
video.addEventListener("keypress", function(event){
  event.preventDefault();
});
video.addEventListener("keyup", function(event){
  event.preventDefault();
});

Чтобы удалить прослушиватели событий с target.removeEventListener(type, listener[, options]);, мне нужно знать имя собственной функции, которая выполняется, и я думаю, что она варьируется от браузера к браузеру.

Isесть способ?Спасибо, связки!

РЕДАКТИРОВАТЬ: я использую атрибут "элементы управления" в моем теге видео.Если бы я удалил его, он работает, но также теряет элементы управления GUI, которые мне нужны.Кроме того, это происходит во всех тестах, которые я могу протестировать (Chrome, FF, Safari).

1 Ответ

1 голос
/ 14 июня 2019

Вы должны укусить пулю, отказаться от атрибута элементов управления и сделать свои собственные элементы управления. Эта часть на самом деле не такая уж и большая часть кода, но если вы хотите заменить ее симпатичным графическим интерфейсом, который может потребовать небольшого количества поисков в Google или MS Painting.

https://developer.mozilla.org/en-US/docs/Web/Guide/Audio_and_video_delivery/cross_browser_video_player

https://developer.mozilla.org/en-US/docs/Web/Guide/Audio_and_video_delivery/Video_player_styling_basics

Вы пытаетесь сделать что-то похожее на то, что делают Youtube и Vimeo, так что посмотрите их видео проигрыватели для вдохновения. Постарайтесь не зацикливаться на том, насколько они сложны, просто поймите, что все это - JS, HTML и CSS. Они делали кнопки, скрубберы, «как», «делиться» и все это сами.

Бонус в том, что ваш плеер будет выглядеть одинаково во всех браузерах.

Если вы хотите позвонить, есть открытые источники:

https://blog.bitsrc.io/5-open-source-html5-video-players-for-2018-38fa85932afb

...