Chcę odtworzyć krótki (mniej niż 1s) plik dźwiękowy w odpowiedzi na dane wprowadzone przez użytkownika w mojej aplikacji internetowej uruchomionej w przeglądarce Mobile Safari na iPadzie z minimalnym opóźnieniem między odtwarzaniem zdarzenia i dźwięku. Odtwarzanie może być uruchamiane wiele razy między odświeżeniami strony, dlatego chcę buforować plik audio.Ponowne użycie obiektu audio HTML5 w mobilnym Safari
Poniższy odtwarza plik na pierwszym kliknięciem ale po niż nic się nie dzieje:
var audio = new Audio("ack.mp3");
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Jeśli dodać detektor zdarzeń do „zakończony” wydarzenie, które ładuje plik mogę dostać dwa odtworzenia z tego samego celem i ciszy:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.load();
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
przypadku ręcznie ustawić atrybut currentTime 0 tak:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.currentTime=0;
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
pojawia się następujący błąd w konsoli błędów:
INDEX_SIZE_ERR: DOM Exception 1: Index or size was negative, or greater than the allowed value.
jakieś pomysły w jaki sposób dokonać tej pracy? Z góry dzięki
próbowałem, ale wydaje się, że trzeba 2s opóźnienie między sztukach. W przeciwnym razie kolejna gra się nie odbędzie. – Crashalot
To też nie działa dla mnie. Nawet w systemie iOS 7 (ostatnia odpowiedź z lutego 2011 r.). –