Desidero riprodurre un file audio breve (meno di 1 secondo) in risposta all'input dell'utente sulla mia app Web in esecuzione su Mobile Safari sull'iPad con latenza minima tra la riproduzione di eventi e audio. La riproduzione può essere attivata più volte tra ricariche di pagina, quindi voglio memorizzare nella cache il file audio.Riutilizzo di oggetti audio HTML5 in Mobile Safari
Il seguente riproduce il file sul primo clic, ma dopo che non succede nulla:
var audio = new Audio("ack.mp3");
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Se aggiungo un listener di eventi per il "si è concluso" evento che ricarica il file che posso ottenere due riproduzioni della stessa oggetto e poi il silenzio:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.load();
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Se fisso manualmente l'attributo currentTime a 0 simili:
var audio = new Audio("ack.mp3");
audio.addEventListener('ended', function() {
audio.currentTime=0;
}, false);
$("#button").click(function(e) {
e.preventDefault();
audio.play();
}
Ottengo il seguente errore nella console di errore:
INDEX_SIZE_ERR: DOM Exception 1: Index or size was negative, or greater than the allowed value.
Tutte le idee su come fare questo lavoro? Grazie in anticipo
provato a farlo, ma sembra che avete bisogno di un ritardo di 2 secondi fra i giochi. In caso contrario, la riproduzione successiva non avverrà. – Crashalot
Questo non funziona anche per me. Anche in iOS 7 (ultima risposta di febbraio 2011). –