2011-11-18 13 views
15

पर ऑडियो बजाना मैं एक ऐसी वेबसाइट पर काम कर रहा हूं जिसमें क्लाइंट के लिए चैट हो, हालांकि, हमें आईपैड (आईओएस 5) में ऑडियो के साथ समस्याएं आ रही हैं।आईपैड

लक्ष्य वास्तव में आईई 7 के समर्थन के साथ आईपैड को प्राथमिकता दी गई है।

मैं कोशिश की है इन तरीकों:

एचटीएमएल 5

<audio id="notification" preload="auto"> 
    <source src="audio/notification.ogg" type="audio/ogg" /> 
    <source src="audio/notification.mp3" type="audio/mpeg" /> 
</audio> 

कुछ जावास्क्रिप्ट

var el = document.getElementById('notification'); 
el.play(); 

कुछ जावास्क्रिप्ट समारोह मैंने कहीं चुरा लिया के साथ जो वास्तव में एक समारोह में दो अलग-अलग तरीके हैं। कृपया ध्यान दें कि स्क्रिप्ट एक उपदिर में है, इसलिए पथ सही है।

function notify() { 
    var url = '../audio/notification.mp3'; 
    var a = document.createElement('audio'); 

    if(!!(a.canPlayType && a.canPlayType('audio/mpeg').replace(/no/, ''))) { 
     var sound = new Audio(url); 
     sound.load(); 
     sound.play(); 
    } else { 
     $('#notification').remove(); 
     var sound = $('<embed id="notification" type="audio/mpeg" src="'+url+'" loop="false" hidden="true" autostart="true" />'); 
     $(body).append(sound); 
    } 
} 

दोनों विधियां काम नहीं लगती हैं। क्या मुझसे कुछ गलत हो रही है?

उत्तर

25

अच्छा, उत्तर कुछ हद तक स्पष्ट था।

शोध कर समय खर्च का एक बहुत बाद आदि, मैं सफारी की आधिकारिक दस्तावेज में an article पाया है कह रही:

iOS पर

सफारी में (सभी उपकरणों के लिए, आईपैड सहित), जहां उपयोगकर्ता हो सकता है एक सेलुलर नेटवर्क पर रहें और प्रति डेटा इकाई चार्ज किया जाए, प्रीलोड और ऑटोप्ले अक्षम हैं। जब तक उपयोगकर्ता इसे शुरू नहीं करता तब तक कोई डेटा लोड नहीं होता है। इसका अर्थ यह है कि जब तक उपयोगकर्ता प्लेबैक शुरू नहीं करता तब तक जावास्क्रिप्ट प्ले() और लोड() विधियां निष्क्रिय भी होती हैं, जब तक कि प्ले() या लोड() विधि उपयोगकर्ता क्रिया द्वारा ट्रिगर नहीं की जाती। दूसरे शब्दों में, उपयोगकर्ता द्वारा शुरू किया गया प्ले बटन काम करता है, लेकिन एक ऑनलोड = "play()" ईवेंट नहीं करता है।

तो, मूल रूप से, आप बिना किसी उपयोगकर्ता को इसे ट्रिगर किए बिना ध्वनि लॉन्च नहीं कर सकते हैं। समाधान के रूप में मैंने एक म्यूट बटन बनाया जो डिफ़ॉल्ट रूप से बंद है, इसलिए आपको इसे क्लिक करना होगा जो अधिसूचना ध्वनि बजाता है। बाद में मैं उपयोगकर्ता इंटरैक्शन के बिना ध्वनि चलाने के लिए जावास्क्रिप्ट का उपयोग कर सकता हूं।

इस महान भविष्य के लिए सफारी धन्यवाद। बहुत बहुत धन्यवाद।

+1

दिलचस्प सामान! –

+4

गह, ऐप्पल पर आओ, उपयोगकर्ता कार्रवाई वेब पेज लोड कर रही है, इसलिए * दो * उपयोगकर्ता क्रियाएं आवश्यक हैं (एक पृष्ठ लोड करना, फिर कुछ और करना)। मूल कुंजीपटल ट्रिगर करने की कोशिश करने में एक ही समस्या है। –

+0

@ टिम एस: क्या आप यह कह रहे हैं कि, किसी दिए गए वेब पेज के लिए: जब उपयोगकर्ता पृष्ठ लोड करता है तो उस प्ले बटन पर क्लिक करता है जिसे आप उस पृष्ठ पर जब चाहें ऑडियो चला सकते हैं? एक माउसओवर घटना के जवाब में, कहो? –

-1

एमपी 3 को दूसरे स्रोत के बजाय पहले स्रोत के रूप में डालने का प्रयास करें। आईपैड का एक मुद्दा होता था जहां यह हमेशा पहले स्रोत को बजाता था, इससे कोई फर्क नहीं पड़ता कि यह क्या हो सकता है (लेकिन यह अब तक तय हो सकता है - लेकिन यह एक कोशिश के लायक है)।

type को audio/mp3 में बदलने का प्रयास करें।

+0

दुर्भाग्यवश, दोनों काम नहीं कर पाए। यद्यपि आपके उत्तर के लिए धन्यवाद। –

+0

विषम। क्या आपने सत्यापित किया है कि यह डेस्कटॉप ब्राउज़र पर काम करता है? तो आप सुनिश्चित कर सकते हैं कि ऑडियो फाइलों के पथ सही हैं? –

+1

मैं निश्चित रूप से पुष्टि कर सकता हूं कि यह डेस्कटॉप पर काम करता है। इसके अलावा, अगर आईपैड वास्तव में ध्वनि है, तो हाहा! –

4

ऐप्पल आईपैड उपयोगकर्ता के बिना ध्वनि चलाने की अनुमति नहीं देता है, इसे पहले शुरू करने पर क्लिक करें।

समाधान: एक प्ले/पॉज़ बटन जोड़ें।

App.toggle_audio = function(elem) { 
    var icon = elem.find("i"); 
    var playing = _.include(icon.attr('class').split(" "), "icon-pause") 
    if (playing) { 
    elem.html("<i class='icon-play'></i> " + App.translate_play_audio); 
    App.play_audio_toggle = false; 
    } else { 
    App.audio_file.load(); 
    elem.html("<i class='icon-pause'></i> " + App.translate_pause_audio); 
    App.play_audio_toggle = true; 
    } 
} 

ऑडियो लोड होने के बाद उपयोगकर्ता बटन पर क्लिक करने के बाद। फिर आप जावास्क्रिप्ट के माध्यम से इसे चला सकते हैं।

if (App.play_audio_toggle) { 
    App.audio_file.play(); 
    } 
+7

मैं इस समस्या से गुज़र गया और इसे हल करने का एक तरीका मिला। फिर मैंने कोड को पोस्ट करने का फैसला किया जो मैं दूसरों की मदद के लिए करता हूं। – Hendrik

6

ऑनलोड के दौरान आईपैड ऑडियो खेलने के लिए आईओएस 6 जारी करने के साथ अभी भी आईपैड के लिए समर्थित नहीं है।

आईओएस 6 के साथ आईफ़ोन के लिए आईफोन पर ऑडियो जैक में हेडफ़ोन प्लग किए जाने पर केवल एक HTML साइट के ऑनलोड के दौरान ही ऑडियो चलाएगा।

+1

ओएमजी गंभीरता से, एलओएल। – Aaron