Media API и слушатель

Есть видео

<video id='video' src = '/'> </video>

Есть слушатель

<script>
var videoEl = document.getElementsByTagName('video')[0],
function sendSeeked() {
    console.log('Сообщение');
}
videoEl.addEventListener('seeked', sendSeeked, false);
</script>

Когда я перематываю видео мышкой - всё работает, в консоль выводится сообщение. Но когда изменяю время через videoEl.currentTime = 30;, то в консоль тоже выводится сообщение, а мне это не нужно. Как это можно реализовать?

Я пытался отключить слушатель, и после изменения времени снова включить его:

        videoEl.removeEventListener('seeked', sendSeeked);
        videoEl.currentTime = 30;
        videoEl.addEventListener('seeked', sendSeeked, false);

Но такой способ не сработал, и сообщение по прежнему отправляется в консоль.


Ответы (1 шт):

Автор решения: nazarpunk

Можете завести себе переменную вместо удаления события.

const $video = document.querySelector('video');
const $button = document.querySelector('button');

let fromJS = false;

$video.addEventListener('seeked', e => {
  console.log(fromJS ? `Скрипт` : `Пользователь`);
  fromJS = false;
});


$button.addEventListener('click', e => {
  fromJS = true;
  $video.currentTime = 3;
});
<div>
  <button type='button'>Seek</button>
</div>

<video controls="controls" preload='none' poster="https://assets.codepen.io/32795/poster.png">
    <source id='mp4' src="http://media.w3.org/2010/05/sintel/trailer.mp4" type='video/mp4' />
    <source id='webm' src="http://media.w3.org/2010/05/sintel/trailer.webm" type='video/webm' />
    <source id='ogv' src="http://media.w3.org/2010/05/sintel/trailer.ogv" type='video/ogg' />
</video>

→ Ссылка