2015-09-18 16 views
7

क्या यह पता लगाने का कोई तरीका है कि वीडियो तत्व पर play() पर कॉल करने के लिए उपयोगकर्ता इशारा किए बिना अनुमति है? एंड्रॉयड क्रोम पर यह चेतावनी दी गई है:फ़ीचर का पता लगाएं कि उपयोगकर्ता इशारा की आवश्यकता है

Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.

तो क्रोम Android पर एक उपयोगकर्ता हावभाव, एक वीडियो के प्लेबैक शुरू करने के लिए आवश्यक है, जबकि यह डेस्कटॉप क्रोम पर नहीं है। क्या यह पता लगाने का कोई तरीका है कि मुझे कौन सा व्यवहार मिलेगा?

यदि मैं कॉलिंग प्ले प्रोग्रामेटिक रूप से अनुमति देता हूं या नहीं, तो मैं अपने ऐप में थोड़ा अलग व्यवहार करना चाहता हूं।

मैंने Modernizr.videoautoplay का उपयोग करने का प्रयास किया है, लेकिन यह जांचता है कि तत्व पर autoplay संपत्ति है, जो एक ही चीज़ नहीं है। यह आईई 11 और एज के लिए झूठी नकारात्मकता देता है।

संपादित करें: an example जोड़ा गया। वीडियो विंडोज 8 या 10 पर क्रोम डेस्कटॉप और आईई 11 या एज (3 एस देरी के साथ) में स्वचालित रूप से खेलना शुरू हो जाएगा। क्रोम @ एंड्रॉइड के लिए एक उपयोगकर्ता इंटरैक्शन की आवश्यकता है (बटन पर क्लिक करना) और कंसोल में त्रुटि संदेश देखा जा सकता है।

+0

क्या आप एक कोड उदाहरण पोस्ट कर सकते हैं जिसमें त्रुटि है? – Patrick

+0

हाय @ पैट्रिक मैंने एक उदाहरण के लिंक के साथ प्रश्न अद्यतन किया है। यह थोड़ा जटिल है (बिट द्वारा वीडियो बिट में फ्रेम जोड़ना) लेकिन समस्या – oskbor

+0

हाय @ ओस्बर देखा जा सकता है, क्या आपको इसके लिए कोई फिक्स मिला? – Biswarup

उत्तर

4

नाटक विधि एक वादा देता है जिसका उपयोग त्रुटि को पकड़ने के लिए किया जा सकता है।

सभी ब्राउज़र the specification का पालन नहीं करते हैं, इसलिए आपको यह जांचना होगा कि क्या लौटाया गया है, पहले एक वादा है।

var autoPlayAllowed = true; 
var promise = document.createElement("video").play(); 
if(promise instanceof Promise) { 
    promise.catch(function(error) { 
     // Check if it is the right error 
     if(error.name == "NotAllowedError") { 
      autoPlayAllowed = false; 
     } else { 
      throw error; 
     } 
    }).then(function() { 
     if(autoPlayAllowed) { 
      // Allowed 
     } else { 
      // Not allowed 
     } 
    }); 
} else { 
    // Unknown if allowed 
} 
+1

मुझे लगता है कि यह जांचने की आवश्यकता है कि 'विंडो। समझौता' पहले मौजूद है, अन्यथा आपको उन ब्राउज़रों पर एक संदर्भ त्रुटि मिलेगी जो वादे का समर्थन नहीं करते हैं। – JayPea

संबंधित मुद्दे