2012-11-10 37 views
1

我正在一個簡單的頁面上有一個文本輸入,用戶可以添加他們想插入到頁面的YouTube視頻的ID,然後我打電話給youtube的iframe api來加載視頻。但是,如果用戶添加一個不存在的ID,我會看到一個黑屏。Youtube的iframe api檢查視頻是否存在

我希望有人知道在加載視頻之前檢查視頻是否存在的方法。

這是我的代碼:

$(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 
      } 
    }); 
    }); 
}); 

回答

0

這裏$ VideoID的含有yuotube網址的視頻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; 
     } 
    } 
4

按照documentation的onError應該給你這樣的信息

- 視頻請求的沒有被發現。當一個 視頻已被刪除(出於任何原因)或已被標記爲私人時發生此錯誤。

添加onerror事件處理程序的事件對象

events: { 
    'onReady': onPlayerReady, 
    'onStateChange': onPlayerStateChange, 
    'onError': function(errEvent) { 
     var errCode = errEvent.data; 
     if(errCode == 100) { 
      alert('Video Not Found'); 
     } 
    } 
} 
+0

嘿感謝您的回答!按照您的建議和文檔中所示,我已將「onError」添加到事件中,但仍會加載黑屏並且不會調用警報。這裏是我的演示頁面:http://dev.xtendi.com/bin/youtube.html –

0

拆機之前就觸發測試Ajax請求的URL。如果Youtube頁面視頻不存在,它會返回一個404頭(我剛剛用一個不存在的視頻URL對其進行了測試)。

如果您使用$ .ajax方法,您可以在成功回調中插入播放器加載函數,並在錯誤回調中觸發錯誤警報(因爲它應該在響應標頭爲4xx或5xx時調用)