Мне нужно загрузить около 20 звуков на моей странице. я подумал, может быть, мне нужно загрузить только 2 элемента отдельно, поэтому вы увидите свойство inProgress
loadAudio: function () {
if (this.inProgress <= 1) {
this.inProgress++;
var elem = this.audioQueue.pop();
if (elem != null) {
var path = elem.Path + elem.Fileid + ((this.canPlayMp3) ? '.mp3' : '.wav');
audio = new Audio();
audio.src = "http://localhost:55578/~/x.mp3";
audio.addEventListener('loadedmetadata', function (e) { AudioPlayer.audioLoaded(e); }, false);
//audio.addEventListener('loadeddata', function (e) { AudioPlayer.audioLoaded(e); }, false);
audio.addEventListener('error', function (e) { AudioPlayer.audioLoaded(e); }, false);
if (elem.AudioType == AudioPlayerTypes.Keyboard) {
this.keyboardAudio[elem.Id] = audio;
}
}
}
audioLoaded: function (e) {
var t = e.target;
if (e.type == "error") {
var code = e.target.error.code;
console.log("error" + t.currentSrc + e.target.error.code);
} else {
console.log("loaded" + t.currentSrc);
}
this.inProgress--;
this.loadAudio();
}
Как вы видите, я загружаю тот же звук только для теста, но та же проблема после 6 аудио я получил ошибку
LOG: loadedhttp://localhost:55578/~/x.mp3
LOG: loadedhttp://localhost:55578/~/x.mp3
LOG: loadedhttp://localhost:55578/~/x.mp3
LOG: loadedhttp://localhost:55578/~/x.mp3
LOG: loadedhttp://localhost:55578/~/x.mp3
LOG: loadedhttp://localhost:55578/~/x.mp3
LOG: errorhttp://localhost:55578/~/x.mp3 (4 - is error code)
работает довольно круто в Chrome, Firefox, но не в IE.
Я не могу найти никаких ограничений и решений.
Также дополнительный вопрос: я читал, что иногда лучше избегать элементов DOM, поэтому я работаю с аудиообъектом, потому что мне нужно много раз проигрывать разные элементы.