2012-06-20 65 views
1

我有一個視頻標籤,下面是HTML無法錯誤事件綁定的視頻元素

<video id="videoId" controls="controls"> 
<source src="../video/trailer.mp4" type="video/mp4" /> 
</video> 

我想這個視頻元素。我有寫代碼的火,但它不是工作,如何在加onerror事件我可以綁定它。可能我缺少somethng

window.onerror=function(){ 
      var myvid = document.getElementById('videoId'); 
      if (myvid.error) { 
      switch (myvid.error.code) { 
       case myvid.error.MEDIA_ERR_ABORTED: 
        alert("You stopped the video."); 
        break; 
       case myvid.error.MEDIA_ERR_NETWORK: 
        alert("Network error - please try again later."); 
        break; 
       case myvid.error.MEDIA_ERR_DECODE: 
        alert("Video is broken.."); 
        break; 
       case myvid.error.MEDIA_ERR_SRC_NOT_SUPPORTED: 
        alert("Sorry, your browser can't play this video."); 
        break; 
      } 
      } 
     } 

在此先感謝您的幫助。

回答

0

好,林不知道,如果你能得到在窗口元素的錯誤......但如果你使用的是HTML5 specififation看這裏:http://www.w3.org/TR/2010/WD-html5-20100624/video.html#video,你會發現下面的腳本塊:

<script> 
function failed(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; 
} 
} 
</script> 
<p><video src="tgif.vid" autoplay controls onerror="failed(event)"></video></p> 
<p><a href="tgif.vid">Download the video file</a>.</p> 
+0

謝謝 'longilong' 的答覆。我試過這個,但是如果我想綁定這個視頻元素並且想要在元素標籤處給出onerror =「failed(event)」,我該如何綁定,我已經使用了$('#videoId')。上( '的onerror',函數(){警報( '錯誤')});但是隻有當我錯過視頻元素的閉合'>'時它纔會觸發。如果我​​編寫像

+0

不知道你想要什麼,但如果你重新使用fe mootools你應該能夠像這樣綁定它$('videoId')。addEvent('onerror',function(evt){alert(evt.target.error.code)}) – longilong

0

重要的是,加載錯誤不是發生在視頻標籤上,而是發生在視頻標籤內的源標籤上,並且該事件必須附加到源標籤的src屬性上,那麼您可以使用parentNode.id來尋址合適的視頻標籤,並且使用錯誤發生時以及確切位置發生。

我使用一系列編號的視頻標籤和一個Popcorn.js對象的數組來處理頁面上的視頻。

還有就是我這裏的解決方案:

$("source").error(function() { 
    var tagStr = this.parentNode.id; 
    var pop = videos[tagStr.charAt(str.length-1)]; 
    if (pop.media.networkState == pop.media.NETWORK_NO_SOURCE) { 
     doSomething; 
    } 
    }).attr("src"); 
相關問題