Итак, я создаю веб-приложение, в котором есть div с текстом, который изменяется в зависимости от действий пользователя (он проходит через массив фрагментов текста). Я пытаюсь добавить аудио к нему, поэтому я сделал еще один массив со звуковыми файлами в соответствующих позициях:
var phrases=['Please hand me the awl.','etc1','etc2','etc3'];
var phrasesAudio=['awl.mp3','etc1.mp3','etc2.mp3','etc3.mp3'];
И при каждом завершении действия увеличивается переменная 'counter', и каждый массив ищет объект по этому счетчику
var audio = document.createElement("audio"),
canPlayMP3 = (typeof audio.canPlayType === "function" &&
audio.canPlayType("audio/mpeg") !== "");
function onAction(){
correct++;
document.getElementById('speech').innerHTML=phrases[correct];
if(canPlayMP3){
snd = new Audio(phrasesAudio[correct]);
}
else{
snd = new Audio(phrasesAudioOgg[correct]);
}
snd.play();
}
(текст заменяет HTML-код div, и я использую .play () для аудиообъекта) ... обычно работает нормально (и ВСЕГДА работает в «реальном» браузере), но на iPad (фактическое целевое устройство) после нескольких успешных итераций TEXT продолжает прогрессировать точно, но AUDIO будет икать и повторять звуковой файл один или несколько раз. Я добавил журналирование и посмотрел, что он сообщает, что он воспроизводит screw.mp3
(просто пример, ни один конкретный файл не более или менее подвержен ошибкам), но в действительности он воспроизводит screwdriver.mp3
(предыдущий файл, если есть ошибка звук всегда LAGS, а не LEADS) ... из-за этого я думаю, что проблема заключается в моем использовании .play () ... поэтому я попытался установить snd=null;
между каждым звуком, но ничего не изменилось ... Любой предложения о том, как поступить? Это мое первое использование аудио элементов, поэтому любые советы приветствуются. Благодаря.
edit: я также попытался установить файлы с помощью snd.src (на основе https://wiki.mozilla.org/Audio_Data_API), и это не вызвало воспроизведение звука