2010-05-04 19 views
9

Mam stronę internetową, która odtwarza dźwięk po kliknięciu przycisku.jQuery: Jak wczytujesz dźwięk?

To jak to zrobić

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

Jak można wczytywać plik dźwiękowy wcześniej?

Dziękuję.

Odpowiedz

12

Po prostu myśląc w górnej części mojej głowy, możesz zrobić zapytanie ajax dla pliku dźwiękowego, ale nie pokazuj przycisku, dopóki plik nie zostanie załadowany w 100%.

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

Idealny! Dzięki! – Aximili

+2

To dobre rozwiązanie, ale nie działa w IE, a przynajmniej nie z plikami dźwiękowymi, ponieważ IE nie jest w stanie poprawnie obsługiwać plików binarnych i nie uruchamia funkcji powodzenia, więcej informacji można znaleźć w tym wydaniu: http: //bugs.jquery. com/ticket/11426 - odkrył to właśnie dzisiaj. – SamiSalami

0
  1. Złóż wniosek AJAX do niego. Jeśli twój serwer wyda odpowiednie nagłówki buforowania (np. Wygasa), zostanie zapisany w pamięci podręcznej przeglądarki.

  2. brzydki sposób:

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

Thanks Sanmai, ale nie sądzę, kod działa ... Wydaje się, pobierz plik po załadowaniu strony, ale pobierz ponownie, gdy kliknę przycisk. – Aximili

+0

Czy sprawdziłeś nagłówki buforowania? Jeśli ich nie ma, klient na pewno ponownie pobierze plik. Jeśli używasz Apache, poświęć trochę czasu i przeczytaj o ** mod_exires **. Jeśli nie, Google ma pomóc. – sanmai

0

Nie ma czegoś takiego jak <embed>.

Możesz użyć elementu HTML5 <audio> bez , a później sprawić, by zaczął grać przy pomocy metody play().

+7

A także poświęcić wsparcie IE. –

+14

Możesz dodać kompatybilność IE, używając . Łączę kilka przykładów, ale GeoCities są zamknięte. – cbednarski

2

Istnieje wiele lepszych sposobów na odtwarzanie dźwięku za pomocą JavaScript. Dla mojego ulubionego, sprawdź SoundManager. Dzięki niemu możesz po prostu zadzwonić pod numer soundManager.load, aby wczytać plik dźwiękowy z wyprzedzeniem.

1

Czy to w HTML5 tak:

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

Następnie, aby go odtworzyć:

my_sound[0].play();