2013-04-09 10 views
7

के बजाय स्रोत तत्व के साथ प्लेबैक त्रुटि लौटाना मैं एक साधारण HTML5 वीडियो तत्व में कुछ त्रुटि हैंडलिंग जोड़ना चाहता हूं। इम कोड के इस टुकड़ा जो हर जगह दिखाई देता है online का उपयोग कर:एचटीएमएल 5 वीडियो। Attr

जे एस

function playbackFailed(e) { 
    // video playback failed - show a message saying why 
    switch (e.target.error.code) { 
    case e.target.error.MEDIA_ERR_ABORTED: 
     alert('You aborted the video playback.'); 
     break; 
    case e.target.error.MEDIA_ERR_NETWORK: 
     alert('A network error caused the video download to fail part-way.'); 
     break; 
    case e.target.error.MEDIA_ERR_DECODE: 
     alert('The video playback was aborted due to a corruption problem or because the video used features your browser did not support.'); 
     break; 
    case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED: 
    alert('The video could not be loaded, either because the server or network failed or because the format is not supported.'); 
    break; 
    default: 
    alert('An unknown error occurred.'); 
    break; 
    } 
} 

एचटीएमएल

<video id="a" src="tgif.vid" autoplay controls onerror="playbackFailed(event)" poster="http://img.rasset.ie/000736d2-512.jpg" width="620" height="400"></video> 

से ऊपर ठीक काम करता है और मैं एक तेज़ चेतावनी बॉक्स मिल पृष्ठ लोड होने ।

हालांकि अगर मेरे पास "src" विशेषता नहीं है और इसके बजाय <source><video> तत्व "आतंक (घटना)" के भीतर टैग का उपयोग नहीं किया जाता है? उदाहरण मार्कअप:

<video id="b" autoplay controls onerror="playbackFailed(event)" poster="http://img.rasset.ie/000736d2-512.jpg" width="620" height="400"> 
    <source src="tgif.vid"> 
</video> 

नोट मैंने आईड्स "ए" और "बी" के ऊपर दोनों वीडियो तत्व दिए हैं।

कोई व्याख्या कर सकते हैं क्यों निम्नलिखित कोड में:

<script> 
var a = document.getElementById('a'); 
var b = document.getElementById('b'); 

a.addEventListener('error', function(e){alert('error event on a')}); 
b.addEventListener('error', function(e){alert('error event on b')}); 

</script> 

मैं केवल के लिए "एक" और नहीं "बी"

मैं <source> टैग का उपयोग करने के रूप में मैं होगा की जरूरत है एक चेतावनी मिल विभिन्न उपकरणों के लिए कई मीडिया प्रकार आदि

कोई जवाब/टिप्पणियों

के लिए अग्रिम धन्यवाद

एस

+0

आप अन्य ब्राउज़रों के साथ यह सत्यापित किया है? – Joseph

+0

श्रोता को बी के लिए स्रोत टैग में जोड़ने का प्रयास करें और वीडियो टैग – Neil

उत्तर

9

यदि स्रोत शामिल हैं, errors in loading sources must be caught from the <source> elements स्वयं। हालांकि, यह जांचने के लिए कि <source> तत्व विफल हुए हैं, check the <video> element's networkState property यदि यह NETWORK_NO_SOURCE है।

पर और विवरण यहां निम्नलिखित:

Here's a sample code जब पहली स्रोत लोड करने के लिए विफल रहता है और कंसोल में एक त्रुटि आउटपुट:

एचटीएमएल

<video id="b" autoplay controls poster="http://img.rasset.ie/000736d2-512.jpg" width="620" height="400"> 
    <source src="tgif.vid" /> 
    <source src="http://html5doctor.com/demos/video-canvas-magic/video.mp4" /> 
    <source src="http://html5doctor.com/demos/video-canvas-magic/video.webm" /> 
    <source src="http://html5doctor.com/demos/video-canvas-magic/video.ogg" /> 
</video> 

जे एस (संचालकों का उपयोग कर inine स्क्रिप्ट से बचने के लिए)

var sources = document.getElementsByTagName('source'), 
    i; 

for (i = 0; i < sources.length; i++) { 
    (function (i) { 
     sources[i].addEventListener('error', function (e) { 
      console.log('Error loading: '+e.target.src); 
     }); 
    }(i)); 
} 
+0

हाय जोसेफ ऊपर के लिए नेटवर्क स्थिति "3" है और वीडियो चलाता है। यदि मैं उपरोक्त उदाहरण में डमी वीडियो डालता हूं तो परिणामस्वरूप असफल हो जाता है। यह अभी भी 3. मुझे वास्तव में त्रुटि प्रदर्शित करने की आवश्यकता है। – sidarcy

+0

@sidarcy hmm ... त्रुटि का निरीक्षण करने का प्रयास करें (यह हैडलर में 'ई' है)।जहां तक ​​मैंने परीक्षण किया है, ' 'में एक त्रुटि का मतलब'

+0

'networkState' के लिए लिंक सही काम नहीं करता है। यह होना चाहिए: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/networkState –

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