2010-05-04 12 views
9

मेरे पास एक वेबसाइट है जो एक बटन पर क्लिक करते समय ध्वनि बजाती है।jQuery: आप ध्वनि को कैसे लोड करते हैं?

यह मैं इसे कैसे

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

कैसे आप पहले से ध्वनि फ़ाइल को पहले से लोड करते है?

धन्यवाद।

उत्तर

12

बस अपना सिर के ऊपर में सोच, आप ध्वनि फ़ाइल के लिए एक ajax अनुरोध कर सकते हैं, लेकिन बटन दिखाने जब तक फ़ाइल 100% लोड नहीं है।

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

बिल्कुल सही! धन्यवाद! – Aximili

+2

यह एक अच्छा समाधान है लेकिन कम से कम ध्वनि फ़ाइलों के साथ IE में काम नहीं कर रहा है, क्योंकि आईई बाइनरी फ़ाइलों को सही तरीके से संभाल नहीं पा रहा है और सफलता समारोह को ट्रिगर नहीं करता है, अधिक जानकारी के लिए इस समस्या को देखें: http: //bugs.jquery। कॉम/टिकट/11426 - आज ही इसकी खोज की। – SamiSalami

0
  1. इसे AJAX अनुरोध करें। यदि आपका सर्वर उचित कैशिंग हेडर जारी करता है (जैसे की अवधि समाप्त हो जाता है) यह ब्राउज़र कैश में संग्रहीत किया जाएगा।

  2. बदसूरत तरीका:

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

धन्यवाद Sanmai, लेकिन मैं कोड काम करता है नहीं लगता है ... यह लगता है पृष्ठ लोड होने पर फ़ाइल डाउनलोड करें, लेकिन जब मैं बटन क्लिक करता हूं तो इसे फिर से लोड करें। – Aximili

+0

क्या आपने कैशिंग हेडर की जांच की थी? यदि उनमें से कोई भी नहीं है, तो ग्राहक निश्चित रूप से एक फ़ाइल फिर से डाउनलोड करेगा। यदि आप अपाचे का उपयोग कर रहे हैं, तो कुछ समय लें और ** mod_exires ** के बारे में पढ़ें। यदि नहीं, तो Google मदद करना है। – sanmai

0

<embed> जैसी कोई चीज नहीं है।

आप तत्व autoplay के बिना उपयोग कर सकते हैं, और बाद में इसे play() विधि के साथ खेलना शुरू कर दें।

+7

और आईई समर्थन भी बलिदान। –

+14

आप का उपयोग कर आईई संगतता जोड़ सकते हैं। मैं कुछ उदाहरण जोड़ता हूं, लेकिन जियोसिटी बंद है। – cbednarski

2

जावास्क्रिप्ट के साथ ध्वनि चलाने के कई बेहतर तरीके हैं। मेरे पसंदीदा के लिए, SoundManager देखें। इसके साथ, आप ध्वनि फ़ाइल को preemptively लोड करने के लिए बस soundManager.load पर कॉल कर सकते हैं।

1

इस तरह एचटीएमएल 5 में यह करें:

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

तो यह खेलने के लिए:

my_sound[0].play(); 
संबंधित मुद्दे