1

ユーザーがページに挿入したいYouTubeビデオのIDを追加できるテキスト入力を持つ単純なページに取り組んでおり、YouTubeのiframe APIを呼び出してビデオをロードします。ただし、ユーザーが存在しない ID を追加すると、黒い画面が表示されます。

ビデオをロードする前に、ビデオが存在するかどうかを確認する方法を誰かが知っていることを望んでいました。

これは私のコードです:

$(document).ready(function() {
  $('#loadVid').click(function() {
     var player;
     var urlVid = $('#urlVid').val(); //GET THE VIDEO CODE FROM THE TEXT INPUT

     player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: urlVid,
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
     });
  });
});
4

3 に答える 3

5

ドキュメントによると、onErrorはそのような情報を提供するはずです

100 – 要求されたビデオが見つかりませんでした。このエラーは、動画が (何らかの理由で) 削除された場合、または非公開としてマークされた場合に発生します。

イベント オブジェクトに onError イベント ハンドラを追加します。

events: {
  'onReady': onPlayerReady,
  'onStateChange': onPlayerStateChange,
  'onError': function(errEvent) {
      var errCode = errEvent.data;
      if(errCode == 100) {
          alert('Video Not Found');
      }
  }
}
于 2012-11-10T13:31:00.777 に答える
1

$videoId には yuotube URL の動画 ID が含まれています

public function checkVideoExists() {
        $headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $videoId);
        if (!strpos($headers[0], '200')) {
            echo "The YouTube video you entered does not exist";
            return false;
        }
    }
于 2013-04-20T10:13:00.963 に答える
0

プレーヤーを開く前に、URL へのテスト Ajax リクエストをトリガーするだけです。Youtube ページのビデオが存在しない場合は、404 ヘッダーが返されます (存在しないビデオ URL でこれをテストしました)。

$.ajax メソッドを使用する場合、プレーヤーの読み込み関数を成功コールバックに挿入し、エラー コールバックでエラー アラートをトリガーできます (応答ヘッダーが 4xx または 5xx の場合に呼び出される必要があるため)。

于 2012-11-10T13:32:36.047 に答える