Html5 аудио краткое время NaN при создании собственного плеера - PullRequest
0 голосов
/ 28 апреля 2020

My MinutesDuration и SecondsDuration устанавливаются на NaN на короткую секунду, а затем переключаются на длительность musi c, как и предполагалось.

Я не использую тег в моем HTML метод вызывается нажатием кнопки.

Как я могу остановить этот NaN?

previousSong () {
  if (sound) {
    if (this.isPlaying && sound.currentTime > 5) {
      sound.currentTime = 0
    } else {
      sound.pause()
      sound = new Audio(require('assets/YES.mp3'))
      sound.play()
      // I assume some if statement is needed before eventListener
      sound.addEventListener('timeupdate', (update) => { this.updateTime(sound) })
    }
  }
},
updateTime (sound) {
  const timeMinutes = Math.floor(sound.currentTime / 60).toFixed()
  const timeSeconds = (sound.currentTime - timeMinutes * 60).toFixed()
  this.TimeMinutes = (timeMinutes >= 10) ? timeMinutes.toString() : '0' + timeMinutes.toString()
  this.TimeSeconds = (timeSeconds >= 10) ? timeSeconds.toString() : '0' + timeSeconds.toString()
  const durationMinutes = Math.floor(sound.duration / 60).toFixed()
  const durationSeconds = (sound.duration - durationMinutes * 60).toFixed()
  this.DurationMinutes = (durationMinutes >= 10) ? durationMinutes.toString() : '0' + durationMinutes.toString()
  this.DurationSeconds = (durationSeconds >= 10) ? durationSeconds.toString() : '0' + durationSeconds.toString()
}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Я исправил это, добавив эту строку кода в начале метода updateTime ():

const duration = sound.duration || 0
0 голосов
/ 28 апреля 2020

Вы можете использовать обратный оператор if для длительности минут и длительности секунд. Тогда, если NaN, просто не завершайте sh функцию updateTime и не возвращайте.

if(!(DurationMinutes >= 0 || DurationMinutes < 0)){ /*is NaN*/ return; } 
...