为什么我对音频currentTime的设置总是发出音频结束事件?

时间:2019-04-22 03:18:40

标签: javascript

我正在设置音频元素的currentTime = 0,但是它总是发出音频ended事件,并且currentTime总是等于持续时间。

audio.addEventListener('loadedmetadata', (e) => {
  const that = this;
  const audio = this.oAudio;
  const duration = audio.duration;
  if (duration === Infinity) {
    audio.currentTime = 1e101;
    audio.ontimeupdate = function() {
      audio.ontimeupdate = () => {

      };
      audio.currentTime = 0;
      that.duration();
    };
  }
}, false);

1 个答案:

答案 0 :(得分:0)

因为您的媒体持续时间少于1e + 101秒。

我不确定您要在这里做什么,也不确定为什么此 ended 事件会触发该问题,但这听起来像是您尝试应用{{3 }},以获取某些媒体的正确播放时间。

如果是这种情况,那么您必须等到收到持续时间后,再附加结束事件(甚至在对该MediaElement进行任何其他操作之前)。

为可能的伪代码

// getMediaDuration is an asynchronous task
const duration = await getMediaDuration(audio);
// now that the async part is done we can add our listeners
audio.addEventListener('ended', dosomething);