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

    Ho un sito Web che riproduce suoni quando si fa clic su un pulsante.jQuery: Come si precarica il suono?

    Questo è come lo faccio

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

    Come si fa a precaricare il file audio in anticipo?

    Grazie.

    risposta

    12

    solo pensando in cima alla mia testa, puoi fare una richiesta Ajax per il file audio, ma non mostrare il pulsante fino a quando il file è caricato al 100%.

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

    Perfetto! Grazie! – Aximili

    +2

    È una soluzione eccellente ma non funziona in IE almeno non con i file audio, perché IE non è in grado di gestire i file binari correttamente e non attiva la funzione di successo, vedere questo problema per ulteriori informazioni: http: //bugs.jquery. it/ticket/11426 - l'ho scoperto proprio oggi. – SamiSalami

    0
    1. Effettuare una richiesta AJAX. Se il tuo server emette intestazioni di cache appropriate (come Expires) verrà archiviato nella cache del browser.

    2. Il modo più brutto:

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

    Grazie sanmai, ma non credo che il codice funziona ... Sembra di scarica il file quando la pagina viene caricata, ma riscala nuovamente quando clicco sul pulsante. – Aximili

    +0

    Hai controllato le intestazioni di cache? Se non ce n'è uno, un client scaricherà sicuramente un file. Se usi Apache, prendi un po 'di tempo e leggi ** mod_exires **. In caso contrario, Google è di aiutare. – sanmai

    0

    Non esiste una cosa come la <embed>.

    È possibile utilizzare un elemento HTML5 <audio> senza autoplay e successivamente farlo iniziare a giocare con il suo metodo play().

    +7

    E anche sacrificare il supporto IE. –

    +14

    È possibile aggiungere la compatibilità IE utilizzando . Collegheremo alcuni esempi, ma GeoCities è chiuso. – cbednarski

    2

    Ci sono tanti modi migliori per riprodurre suoni con JavaScript. Per il mio preferito, controlla SoundManager. Con esso, puoi semplicemente chiamare soundManager.load per caricare preventivamente il file audio.

    1

    Fate questo in HTML5 come questo:

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

    poi a giocare esso:

    my_sound[0].play(); 
    
    Problemi correlati