我正在设置音频元素的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);
答案 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);