2013-11-27 61 views
0

我試圖使用YouTube API來控制幻燈片放映中的一組播放器。我希望能夠停止並播放視頻,具體取決於幻燈片播放的內容。所以我會根據幀的id將玩家推入陣列。當名聲發生變化時,我會呼叫當前的停止位置並開始新的位置。然而,即使在最基本的情況下,我得到這個錯誤:youtube API playVideo,pauseVideo and stopVideo not working

Uncaught TypeError: Object #<S> has no method 'playVideo' 

下面是簡單的測試

<!-- WIDGET YOUTUBE VIDEO --> 
<div class="widget_youtube_video" id="wyv_1-5"> 
    <iframe id="ytplayer_1-5" width="560" height="315" src="//www.youtube.com/embed/CxW8TLtUMfM?autoplay=0&enablejsapi=1&origin=http://mmgi.localhost/" frameborder="0" allowfullscreen></iframe> 
    <script type="text/javascript"> 
     var tag = document.createElement('script'); 
     tag.src = "//www.youtube.com/iframe_api"; 
     var firstScriptTag = document.getElementsByTagName('script')[0]; 
     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
     var yt_players = {}; 

     function onYouTubeIframeAPIReady() { 
      yt_players['1-5'] = new YT.Player('ytplayer_1-5'); 
      yt_players['1-5'].playVideo(); 
     } 
    </script> 
</div><!-- end widget_youtube_video --> 

我已經嘗試從URL中移除來源標籤檢查代碼如果這是造成問題,但它仍然給我同樣的錯誤。任何幫助將不勝感激,因爲我不知道該從哪裏出發。

在此先感謝。

編輯:

我也試着將播放器放在一個非數組對象,它也沒有工作。

回答

3

我看到的一些東西可能有用。首先,刪除origin參數將有助於開發過程,因爲它在一般情況下阻止訪問API,如果A)它不完全匹配,並且B)有時在localhost上無緣無故。

正如你所注意的,即使在你的情況下刪除它,API沒有響應。這是因爲創建一個YT.player對象會消耗一些時間,所以您在嘗試在對象完全初始化之前觸發playVideo方法。相反,你應該利用YT.Player對象的onReady回調參數,如:

var tag = document.createElement('script'); 
    tag.src = "//www.youtube.com/iframe_api"; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
    var yt_players = {}; 

    function onYouTubeIframeAPIReady() { 
     yt_players['1-5'] = new YT.Player('ytplayer_1-5', { 
      events: {'onReady': onPlayerReady} // bind to callback for when object is ready 
     }); 
    } 

    function onPlayerReady(event) { 
     event.target.playVideo(); // this is kept generic so the same callback can be used with any player object 
    } 

下面是與工作代碼小提琴: http://jsfiddle.net/jlmcdonald/dEjXL/

+1

你的答案似乎是正確的,買我的onPlayerReady函數不觸發。你有什麼想法爲什麼會發生? –

+0

幾種可能性。首先,確保東西嵌套正確,並且您不會意外地在onYouTubeIframeAPIReady函數內定義onPlayerReady函數。您也可以將您的非工作代碼發佈爲評論回覆,因爲可能會有其他小問題被忽略。 – jlmcdonald

+0

我相信您的問題與我的問題相同,並且Google將其列爲功能不可用: -/https://developers.google.com/youtube/iframe_api_reference?hl=zh-TW#Mobile_considerations –

相關問題