2010-05-04 51 views
9

Tôi có trang web phát âm thanh khi bạn nhấp vào nút.jQuery: Làm thế nào để bạn tải trước âm thanh?

Đây là cách tôi làm điều đó

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

Làm thế nào để bạn tải trước các tập tin âm thanh trước?

Cảm ơn bạn.

Trả lời

12

chỉ cần suy nghĩ trong đầu của tôi, bạn có thể thực hiện yêu cầu ajax cho tệp âm thanh không, nhưng không hiển thị nút cho đến khi tệp được tải 100%.

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

Hoàn hảo! Cảm ơn! – Aximili

+2

Đó là giải pháp tốt nhưng không hoạt động trong IE ít nhất là không có tệp âm thanh, vì IE không thể xử lý tệp nhị phân chính xác và không kích hoạt chức năng thành công, xem vấn đề này để biết thêm thông tin: http: //bugs.jquery. com/ticket/11426 - phát hiện ra nó ngay hôm nay. – SamiSalami

0
  1. Thực hiện yêu cầu AJAX cho nó. Nếu máy chủ của bạn phát hành các tiêu đề bộ nhớ đệm thích hợp (như Hết hạn), máy chủ sẽ được lưu trữ trong bộ nhớ cache của trình duyệt.

  2. Cách xấu xí:

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

Cảm ơn Sanmai, nhưng tôi không nghĩ rằng các mã hoạt động ... Dường như với tải xuống tệp khi trang được tải, nhưng tải xuống lại khi tôi nhấp vào nút. – Aximili

+0

Bạn đã kiểm tra các tiêu đề bộ nhớ đệm chưa? Nếu không có ai trong số họ, một khách hàng chắc chắn sẽ tải xuống lại một tệp. Nếu bạn đang sử dụng Apache, hãy dành một chút thời gian và đọc về ** mod_exires **. Nếu không, Google sẽ trợ giúp. – sanmai

0

Không có những điều như <embed>.

Bạn có thể sử dụng phần tử HTML5 <audio> mà không cần autoplay và sau đó làm cho nó bắt đầu phát bằng phương pháp play() của nó.

+7

Và cũng hy sinh hỗ trợ IE. –

+14

Bạn có thể thêm khả năng tương thích IE bằng . Tôi muốn liên kết một số ví dụ, nhưng GeoCities bị đóng. – cbednarski

2

Có rất nhiều cách tốt hơn để phát âm thanh bằng JavaScript. Đối với yêu thích của tôi, hãy xem SoundManager. Với nó, bạn chỉ cần gọi soundManager.load để tải tệp âm thanh trước.

1

Làm điều này trong HTML5 như thế này:

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

Sau đó, để chơi nó:

my_sound[0].play(); 
Các vấn đề liên quan