2011-12-06 1 views
13

나는 소리를 내고자 노력하고 있으며, 저에게 맞는 두 가지 방법을 발견했습니다. 더 좋은 방법과 이유는 무엇입니까? "로드"이벤트 리스너를 추가하는 것이 좋습니다.HTML5 및 자바 스크립트로 사운드를 재생하는 가장 좋은 방법

첫 번째 방법 :

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

    audioElement.play(); 
}); 

두 번째 방법 :

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

새로운 오디오()의 경우 오디오 용 네트워크 소스는 어떻게됩니까? – vinnitu

답변

2

'DOMReady'가 Image와 같이 사운드 파일 다운로드가 완료되지 않는다고해서 실제로 첫 번째 방법 (load)을 사용해야합니다.

+0

인 html5shiv 스크립트를 사용하고 있지만 오디오 파일을 초기화하는 더 좋은 방법은 무엇입니까? 'new audio ('sound.ogg'); 또는'document.createElement ('audio');'?? –

+1

AFAIK 그들은 동일합니다. 둘 다 새로운 HTMLAudioElement를 만듭니다. 그러나'new Audio()'생성자는 오래된 방법 (pre-DOM1)이고'document.createElement()'는 더 새로운 방법 (DOM2)입니다. 'new Audio()'로 생성 된 요소를 문서에 첨부 할 수 없습니다. 'new Audio ('sound.ogg')'는 var a = new Audio()의 단축키입니다. a.src = 'sound.ogg';'. – tungd

+0

OK, 여기에서 테스트를했습니다. http://jsperf.com/new-audio-vs-document-createelement-audio – tungd

1

당신은 정말이에 대한 특징 검출 시스템을 사용해야합니다. Modernizr to test for HTML5 audio을 사용합니다. 그렇게하면 HTML5로 오디오를들을 수있는 사람들에게만 오디오를 제공하려고 시도하게됩니다.

심지어 Modernizr을 사용하여 찾을 수없는 경우 test for HTML5 features 및 대안으로 대체 할 수 있습니다. 이러한 대안을 "polyfills"라고하며 Modernizr이 지원하는 목록은 here입니다.

이렇게하면 브라우저의 기능면에서 모든 기반을 다룰 수 있다는 이점이 있습니다. 나는 여전히 IE7을 사용하여 바보들을 동정합니다.

+0

Modernizr에 대해 알고 있지만 IE 사례에서 으로 사운드를 재생하려고합니다. 대신 Modernizr –