2011-12-06 15 views
13

Sto provando a riprodurre un suono e ho trovato due modi che funzionano per me. Qual è il modo migliore e perché? è una buona idea aggiungere un listener di eventi "load"?Il modo migliore per riprodurre suoni con HTML5 e Javascript

Primo modo:

$(document).ready(function() { 
    var audioElement = document.createElement('audio'); 
    audioElement.setAttribute('src', 'sound.ogg'); 
    audioElement.addEventListener("load", function(){ 
     audioElement.play(); 
    }, true); 

    audioElement.play(); 
}); 

Secondo modo:

$(document).ready(function() { 
    audioElement = new Audio('sound.ogg'); 
    audioElement.play(); 
}); 
+0

che dire dell'origine di rete per l'audio nel caso in cui il nuovo Audio()? – vinnitu

risposta

2

Si dovrebbe davvero andare con il primo modo (con load), perché "DOMReady" non garantisce che il file audio finisca di scaricare, proprio come con Immagine.

+0

ma quale è il modo migliore per inizializzare un file audio? 'new Audio ('sound.ogg');' or 'document.createElement ('audio');' ?? –

+1

AFAIK sono gli stessi, entrambi creeranno un nuovo 'HTMLAudioElement'. Tuttavia il 'new nuovo()' costruttore è il vecchio modo (come di pre-DOM1) e 'document.createElement()' è il modo più recente (DOM2); non puoi collegare l'elemento creato con 'new Audio()' al tuo documento. 'new Audio ('sound.ogg')' è la scorciatoia per 'var a = new Audio(); a.src = 'sound.ogg'; '. – tungd

+0

OK, ho fatto un test qui http://jsperf.com/new-audio-vs-document-createelement-audio – tungd

1

davvero dovrebbe utilizzare un sistema di rilevamento funzione per questo. Io userei Modernizr to test for HTML5 audio. In questo modo stai solo tentando di offrire l'audio a chi può ottenerlo con HTML5.

È possibile anche test for HTML5 features e fallback in alternativa se non si trova utilizzando Modernizr. Queste alternative sono chiamate "polyfill" e un elenco di queste che Modernizr supporta è here.

Il vantaggio di farlo in questo modo è che si sta coprendo tutte le basi in termini di funzionalità del browser. Peccato per gli stupidi là fuori che usano ancora IE7.

+0

Conosco Modernizr, ma sto provando a riprodurre suoni con lo nel caso IE e sto utilizzando lo script html5shiv invece Modernizr –

Problemi correlati