Мне также не удалось получить доступ к readystate на ipad, но вы можете получить другие события, которые более или менее позволяют вам определить состояние готовности.
var audio = new Audio("someSource.mp3");
audio.play();
/* you may need to use .load() depending on how the event was initiated */
audio.addEventListener("canplay", handleCanPlay, false);
audio.addEventListener("durationchange", handleDurationChange, false);
Но давайте поясним, что проблема в том, что Apple в значительной степени говорит всему чертову миру, что они неправильно используют интернет. Конечно, все ненавидят сайты, которые начинают воспроизводить музыку при второй загрузке, но затем Apple сходит с ума и уничтожает ЛЮБУЮ / ВСЕ буферизацию аудио / видео, которая явно не инициируется жестом пользователя, потому что Apple, очевидно, считает, что их пользователи слишком отсталые нажмите «назад», если сайт их беспокоит; Фанаты тоже согласны. Это в основном оставляет остальным нам взламывать дерьмо в наших приложениях, если мы решаемся пытаться управлять любыми звуковыми эффектами. Я знаю, что это не место для разглагольствования ... но я буду проклят, если создание ЛЮБОГО программного обеспечения, интересного и интерактивного в HTML5 на iPad, не будет одним лицевым пульсом за другим ... будь то ограничение в 5 МБ, просто вылетает браузер, если на странице есть * слишком много (по мнению Apple) изображений или сложность предварительно загружать какие-либо носители для улучшения пользовательского интерфейса - серьезно, за исключением блогов WordPress и RSS-ридеров, реализация HTML5 в мобильном Safari довольно бесполезна. И поэтому мечта о ценностном предложении HTML5 «создай один раз, играй где угодно» мертва, и мы возвращаемся к разработке собственных приложений… по крайней мере, это дает нам хорошую безопасность работы / rant