2010-05-04 5 views
9

버튼을 클릭 할 때 소리가 나는 웹 사이트가 있습니다.jQuery : 어떻게 사운드를 프리로드합니까?

이것은 내가 그것을

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

어떻게 사전에 사운드 파일을 미리로드 할 어떻게입니까?

감사합니다.

답변

12

내 머리 꼭대기에서 생각하면 소리 파일에 대한 아약스 요청을 할 수 있지만 파일이 100 %로드 될 때까지 버튼을 표시하지 마십시오.

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

완벽! 감사! – Aximili

+2

IE는 바이너리 파일을 올바르게 처리 할 수 ​​없으며 성공 함수를 트리거하지 않기 때문에 좋은 해결책이지만 Internet Explorer에서는 작동하지 않습니다. 자세한 내용은 http : //bugs.jquery를 참조하십시오. com/ticket/11426 - 오늘 발견했습니다. – SamiSalami

0
  1. 여기에 AJAX 요청을하십시오. 서버가 적절한 캐싱 헤더 (예 : 만료)를 발행하면 브라우저 캐시에 저장됩니다.

  2. 못생긴 방법 :

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

감사 삼매 관청을,하지만 코드가 작동 생각하지 않는다 ... 그것은 보인다 페이지가로드 될 때 파일을 다운로드하지만 버튼을 클릭하면 파일을 다시 다운로드하십시오. – Aximili

+0

캐싱 헤더를 확인 했습니까? 아무 것도없는 경우 클라이언트는 반드시 파일을 다시 다운로드합니다. 아파치를 사용하고 있다면 시간을 갖고 ** mod_exires **에 대해 읽어보십시오. 그렇지 않은 경우 Google이 도움을줍니다. – sanmai

0

<embed> 같은 것은 없다.

autoplay없이 HTML5 <audio> 요소를 사용하고 나중에 play() 메서드로 재생을 시작할 수 있습니다.

+7

또한 IE 지원을 희생합니다. –

+14

를 사용하여 IE 호환성을 추가 할 수 있습니다. 몇 가지 예제를 연결 하겠지만 GeoCities는 닫힙니다. – cbednarski

2

자바 스크립트로 사운드를 재생하는 방법은 다양합니다. 내가 가장 좋아하는 사람은 SoundManager입니다. 이 파일을 사용하면 soundManager.load을 호출하여 사운드 파일을 선제 적으로로드 할 수 있습니다.

1

같은 HTML5에서이 작업을 수행 :

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

그런 다음 그것을 재생 :

my_sound[0].play(); 
관련 문제