Приветствую!
Возникла проблема с буферизацией аудио, точнее с ее попыткой ее индикации.
Подробнее.
Создаю объект Audio, указываю трек.
var player = new Audio();
player.setAttribute('src', 'http://www.codebasehero.com/files/music-player/demo/mix/1.mp3');
player.addEventListener('progress', function(){
var buffered = this.buffered.end(0);
console.log(buffered);
});
player.play();
Пример на jsfiddle, музыкальный отрывок 30 сек --
http://jsfiddle.net/yH8t5/1/
Cуть такова. При первом обращении файл загружается и буферизуется нормально и в консоль выводится время конца буферизованного фрагмента. Но если не дождаться полной загрузки и отключить аудио (не важно, каким способом, закрыть вкладку, грубо говоря), то при повторном обращение выдается ошибка:
Uncaught Error: IndexSizeError: DOM Exception 1
И нормальное выполнение события 'progress' будет только тогда, когда будет достигнут еще не буферизированный фрагмент.
В общем, я так себе представляю ситуацию.
Вопросов несколько: что я делаю не так и как узнать длину уже буферизированного фрагмента правильно?
Спасибо.