Как остановить проигрывание на определенном месте javascript
Имеется функция задача которой, чтобы когда нажата пауза на воспроизведении Song.pause() пользователь нажимает на кнопку, воспроизведение перематывается на определенное время назад и проигрывается ровно столько же на сколько отмоталось и снова становится на паузу.
Все получается кроме последнего, воспроизведение не останавливается. Что я делаю не так?
Вот код
$('.twosec').on('click', function() {
if (Song.paused) {
let timestop = Song.currentTime; //задаю переменную, которая фиксирует текущий момент
Song.currentTime = Song.currentTime - 2; //отнимаю 2 секунды
Song.play();
if (Song.currentTime == timestop) {
Song.pause();
}
}
});
Ответы (2 шт):
Автор решения: NoSkill
→ Ссылка
Воспроизведение аудио асинхронно и позицию нужно отслеживать:
$('.twosec').on('click', function() {
if (Song.paused) {
let timestop = Song.currentTime;
$(Song).on('timeupdate', function() {
if (Song.currentTime >= timestop) {
$(Song).off('timeupdate');
Song.pause();
Song.currentTime = timestop;
}
});
Song.currentTime = Math.max(0, Song.currentTime - 2);
Song.play();
}
});
Автор решения: Олег
→ Ссылка
Вариант без отслеживания:
var Song = document.getElementById("audio");
$('.twosec').on('click', function() {
let timestop = Song.currentTime; //задаю переменную, которая фиксирует текущий момент
if (Song.paused) {
Song.currentTime = Math.max(0, Song.currentTime - 2); //отнимаю 2 секунды
Song.play();
setTimeout(function(){
Song.pause();
}, (timestop - Song.currentTime) * 1000);
}
});