Не перезаписывать переменную до удаления
Сразу извиняюсь за глупый вопрос, но хочется разобраться в этом
Есть примерно такой код:
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, время: 14:01. |