我使用HTMLMediaElement为我的网站构建了一个简单的音频播放器(由于个人原因我避免使用<audio>
元素)
一切似乎都运行良好,但是当我想使用replaceAudio()
替换源时,我收到此错误:
Uncaught IndexSizeError:无法在'TimeRanges'上执行'end':提供的索引(0)大于或等于最大边界(0)。
这是我的代码:
// ********************************************************************** //
// ****************************** Audio.js ****************************** //
// ********************************************************************** //
// Declare element and event listeners
audio = new Audio()
function replaceAudio() {
audio.pause()
audio.currentTime = 1;
audio = new Audio('/static/users/' + trackUser + '/tracks/' + trackSlug + '.mp3');
audio.load()
}
function addAudioEventListeners() {
audio.addEventListener('timeupdate', updateProperties, false)
audio.addEventListener('ended', audioEnded, false)
}
// *** Declare minor functions
// Sets the progress or buffer width
...
// Converts the time integers to formatted time
...
// Get properties and update them
function updateProperties() {
...
function getAudioProps() {
...
buffered = audio.buffered
// Return the values
return {time:time,dur:dur}
}
var getAudioProps = getAudioProps();
...
var bufferend = buffered.end(0) / dur
...
setAudioIndicatorWidth(bufferend, bufferElement);
}
function audioEnded() {}
答案 0 :(得分:0)
在开始调用buffered.end(0)之前,先尝试检查buffered.length
如果(buffered.length大于0) //调用buffered.end(0)/ buffered.start(0)