Я хочу воспроизвести короткий (менее 1 с) аудиофайл в ответ на ввод данных пользователем в моем веб-приложении, запущенном в Mobile Safari на iPad, с минимальной задержкой между воспроизведением события и звука.Воспроизведение может запускаться несколько раз между перезагрузками страницы, поэтому я хочу кэшировать аудиофайл.
Следующее воспроизводит файл при первом клике, но после этого ничего не происходит:
var audio = new Audio("ack.mp3");
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Если я добавлю прослушиватель событий к событию «закончилась», который перезагружает файл, я могу получить два воспроизведения от одного и того же объекта и затем тишина:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.load();
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Если я вручную установлю атрибут currentTime на 0, например так:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.currentTime=0;
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Я получаю следующую ошибку в консоли ошибок:
INDEX_SIZE_ERR: DOM Exception 1: Index or size was negative, or greater than the allowed value.
Есть идеи, как заставить это работать?Заранее спасибо