2012-01-20 7 views

Respuesta

-2

Su mejor opción sería utilizar una reproductor multimedia que tiene una API de JavaScript. Algo así como: -

http://www.schillmania.com/projects/soundmanager2/

Esto le permite reproducir archivos de javascript y se utiliza ya sea html5 o flash para Safari no sería capaz de bloquear un evento desencadenante ella.

5

La razón de que estos eventos estén bloqueados es para evitar la carga de datos que no inició el usuario (read Apple's explanation here). Eso significa que necesita encontrar una manera de hacer que el usuario active la carga de los datos de audio. Haga que el usuario interactúe con la página antes de que se ejecute la aplicación. La inicialización podría ser activada por algo tan simple como "touchstart" disparado en document.body, o un botón que el usuario haga clic para iniciar la aplicación (por ejemplo: haga que el usuario haga clic en un botón que dice "iniciar chat"). En el controlador de ese evento, cargue su archivo de audio a una variable y póngalo a disposición del resto de su aplicación. Luego, en el controlador de éxito ajax, reproducir el sonido:

HTML

<a id="initbutton">Initialize</a> 

JS

var sound; 
$('#initbutton').one('click',function(ev){ 
    sound = new Audio("http://soundjax.com/reddo/61767^ding.mp3"); 
    sound.load(); // load the audio data 
    sound.volume=1; // make sure the volume is all the way up, though this doesn't work on iOS 
}); 

$.ajax(...,function(data,status,jqxhr){ //presumably this will be triggered by some other code 
    if(sound){ 
     sound.play() 
    } 
}); 

See the example here. Intenta inicializar el audio en primer lugar, a continuación, iniciar el bucle de ajax y viceversa. Permanecerá en silencio hasta que se cargue el audio.

Esto ha sido probado en iOS 5.1 en iPad 2 y iPhone 4S. No sé si funcionará en otros dispositivos o en versiones anteriores de iOS.

No conozco ninguna otra forma de hacerlo funcionar.

+0

Puedo confirmar que esto funciona en un iPod touch de segunda generación con iOS 4.2.1. – Dondragmer

+0

@Dondragmer: es bueno saberlo. Gracias por probar – ampersand

Cuestiones relacionadas