Я озираюсь и начинаю беспокоиться, что это невозможно.
Есть ли способ сделать стандартный тег <audio>
с отступлениями ...
<audio>
<source src='song.ogg' type='audio/ogg'></source>
<source src='song.mp3' type='audio/mp3'></source>
</audio>
... с событием onload.Я огляделся по сторонам, и все, что я мог найти, это некоторые хаки, которые могут или не могут работать (они не для меня в Chrome) и событие canplaythrough
.
Причина, по которой я этого хочу, заключается в том, что я делаю презентацию, которая содержит множество аудиоклипов для воспроизведения в определенные моменты.Я не хочу, чтобы презентация начиналась до тех пор, пока не загрузится весь звук (в противном случае все может быть не синхронизировано).Я хочу, чтобы клипы загружались по одному за раз, чтобы я мог создать своего рода панель загрузки.Я действительно не хочу прибегать к использованию Flash-звука, потому что он должен демонстрировать чистые веб-технологии.
Так что, в принципе, у меня есть одна loadAudio
функция, которая циклически перебирает массив аудиофайлов длязагружено audioQueue
.loadAudio
вызывается один раз, а затем вызывает себя, пока все файлы не будут загружены.Проблема в том, что я не нашел правильное событие для запуска загрузки следующего файла.
loadAudio = function(index)
{
mer = audioQueue[index];
var ob = "<audio id='" + mer + "'><source src='resources/sounds/" + mer + ".ogg' type='audio/ogg'></source><source src='resources/sounds/" + mer + ".mp3' type='audio/mp3'></source></audio>";
$("#audios").append(ob);
$("#" + mer).get(0).addEventListener('A WORKING EVENT RIGHT HERE WOULD BE NICE', function() { alert("loaded");
if (index + 1 < audioQueue) { loadAudio(index + 1); } }, false);
}
Итак.Есть ли шанс для правильной загрузки звука?Я в основном готов сделать что-нибудь, пока это все еще HTML и Javascript.