jquery
  • audio
  • preload
  • 2010-05-04 195 views 9 likes 
    9

    Tengo un sitio web que reproduce el sonido al hacer clic en un botón.jQuery: ¿Cómo precarga el sonido?

    Esto es cómo lo hago

    function PlaySound(soundfile) { 
        $('#soundContainer').html("<embed src='/uploads/sounds/" + soundfile + "' hidden=true autostart=true loop=false>"); 
    } 
    

    ¿Cómo se puede cargar el archivo de sonido de antemano?

    Gracias.

    Respuesta

    12

    solo pensando en la parte superior de mi cabeza, puede hacer una solicitud ajax para el archivo de sonido, pero no mostrar el botón hasta que el archivo esté 100% cargado.

    $(document).ready(function() { 
        $.ajax({ 
         url: "soundfile.mp3", 
         success: function() { 
          $("#play_button").show(); 
         } 
        }); 
    }); 
    
    +0

    ¡Perfecto! ¡Gracias! – Aximili

    +2

    Es una buena solución, pero no funciona en IE al menos no con archivos de sonido, porque IE no puede manejar archivos binarios correctamente y no desencadena la función de éxito; consulte este problema para obtener más información: http: //bugs.jquery. com/ticket/11426 - lo descubrí solo hoy. – SamiSalami

    0
    1. Hacer una solicitud AJAX a la misma. Si su servidor emite encabezados de almacenamiento en caché adecuados (como expira) se almacenará en el caché del navegador.

    2. La manera fea:

    soundfile = new Image(); 
    soundfile.src = /uploads/sounds/" + soundfile;
    +0

    Gracias Sanmai, pero no creo que funciona el código ... Parece descargue el archivo cuando la página esté cargada, pero vuelva a descargarla cuando haga clic en el botón. – Aximili

    +0

    ¿Ha verificado los encabezados de almacenamiento en caché? Si no hay ninguno, un cliente seguramente volverá a descargar un archivo. Si está utilizando Apache, tómese un tiempo y lea acerca de ** mod_exires **. Si no, Google es de ayuda. – sanmai

    0

    No hay tal cosa como <embed>.

    Se podría utilizar un elemento HTML5 <audio> sin autoplay, y luego hacerla empezar a jugar con su método play().

    +7

    Y también sacrificar el soporte de IE. –

    +14

    Puede agregar compatibilidad de IE utilizando . Me gustaría vincular algunos ejemplos, pero GeoCities está cerrado. – cbednarski

    2

    Hay tantas formas mejores de reproducir sonido con JavaScript. Para mi favorito, mira SoundManager. Con él, simplemente puede llamar al soundManager.load para cargar el archivo de sonido de manera preventiva.

    1

    Haga esto en HTML5 como esto:

    my_sound = $("<audio>", {src:"filename.mp3",preload:"auto"}).appendTo("body"); 
    

    Luego deberá reproducirla:

    my_sound[0].play(); 
    
    Cuestiones relacionadas