Не перезаписывать переменную до удаления
Сразу извиняюсь за глупый вопрос, но хочется разобраться в этом
Есть примерно такой код: video.addEventListener('timeupdate', (event) => { const time = video.currentTime; console.log(time); }); Переменная "time", постоянно перезаписывается. Интересует следующее, можно сделать что б в переменную записывалось только самое первое значение и не менялось, до того как будет удалена через 'delete time;', и затем cнова также записывалось первое значение и т.д? Спасибо! |
Потому, что по мере проигрывания клипа постоянно меняется текущий таймкод и постоянно возникает событие timeupdate
Про переменную и особенно про ее удаление - не понял. |
let time; video.addEventListener('timeupdate', (event) => { time ??= video.currentTime; console.log(time); }); |
Aetae,
А смысла? Не проще let time; video.addEventListener('timeupdate', (event) => { time = video.currentTime; console.log(time); }, {once:true}); И что там про удаление? |
voraa,
let time; time ??= 1; time ??= 2; time ??= 3; time // 1 А удаление, надо полагать, по какому-то другому событию он сделает: time = null;(delete, конечно, не сработает) и оно снова перезапишется на currentTime. :) Хотя зачем - это да, не понятно. Можно вообще просто рукам брать currentTime и ничего не удалять. |
Ну может ты и прав, если там еще какие действия надо делать
Например let time; video.addEventListener('timeupdate', (event) => { time ??= video.currentTime; if ( video.currentTime - time >= 5000) { .... } }); |
Все что мне нужно это выполнить события в определенное время видео, через несколько секунд, к примеру 7
Допустим видео начинается с 20-ой секунды, затем: 27 event 34 event 41 event и т.д Важно что б события сработали когда именно на видео будет определенная секунда, просто через Interval не подходит |
Я думал если записать первое значение, потом можно сравнить, к примеру:
const time = video.currentTime; if ( ideo.currentTime > (time + 7)) { event delete time; } И все по новой, но что то не так тут |
Другими словами мне нужно сделать превью видео при наведение на блок
Что то такое, видео начинается на 20-ой секунде, идет 3 сек, перематывается на 7, идет 3 сек, перематывается на 7 и т.д |
Жестоко. Ради превью ты юзеру всё видео целиком так скачаешь.)
|
нет, у меня уже сделано возможность как на youtube, показывать только кусок видео. Хочу сделать и второй вариант, на выбор так сказать
|
Сложновато оказалось (давно с видео не работал)
Получилось как то так (Пример видео - какой нашел в инете не самый короткий <body> <video id='video' src='https://www.nlm.nih.gov/web/documentation/TemplateDocumentation/video_files/IN_Intro-800.mp4'> </video> <br> <button id=bs>Start</button> <script> let duration; const start = 20; const dplay = 3; const dskip = 7; const video = document.getElementById('video') const play = (d) => { console.log('play', video.currentTime) const te = Math.min(video.currentTime + d, duration) const result = !(te === duration) return new Promise ((res) => { const handl = () => { if (video.currentTime > te-0.05) { video.removeEventListener('timeupdate', handl) res (result); } } video.addEventListener('timeupdate', handl) video.play(); }) } const skip = (d) => { console.log('skip', video.currentTime) const ts = Math.min(video.currentTime + d, duration) return new Promise ((res) => { if (ts === duration) res (false); const handl = () => { video.removeEventListener('seeked', handl) res (true); } video.addEventListener('seeked', handl) video.currentTime = ts; }) } const work = async () => { let result = true; result = await skip (start) while (result) { result = await play(dplay) if (result) result = await skip(dskip) } } video.addEventListener('durationchange', () => { duration = video.duration; }) document.getElementById('bs').onclick = () => work() </script> </body> |
благодарю
|
Часовой пояс GMT +3, время: 05:34. |