1

私はビデオタグを持っています、以下はhtmlです

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

このビデオ要素に onError イベントを追加したいのですが、起動するコードを書きましたが、それをバインドする方法が機能しません。

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;
             }
            }
        }

助けてくれてありがとう。

4

2 に答える 2

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");
于 2012-08-08T13:24:06.740 に答える
0

まあ、ウィンドウ要素でエラーが発生するかどうかはわかりません...しかし、ここでhtml5仕様を見ると: 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>
于 2012-06-20T09:08:35.793 に答える