2014-11-06 54 views
1

我想調用onYouTubeIframeAPIReady函數,但這並不是解僱。我在控制檯中只獲得frameID,但其他功能沒有被調用。onYouTubeIframeAPIReady函數沒有調用

$(document).ready(function(){ 
    var player; 
    var ytsrc = $('.video_holder_frame').find('iframe').attr('src'); 
    if (ytsrc) ytsrc = ytsrc.match(/youtube.com\/embed\/([^\\?]*)/i); 
    if (!ytsrc) return; 
    var frameID = 'youtube_' + ytsrc[1];  
    console.log(frameID); 
    $('.video_holder_frame').find('iframe').attr('id', frameID); 

    function attachToYoutubeFrame() { 
     console.log("attachToYoutubeFrame"); 
     function onytplayerStateChange(newState) { 
      console.log("onytplayerStateChange"); 
      console.log(newState); 
     }; 

     player = new YT.Player(frameID, { 
      events: { 
       "onStateChange": onytplayerStateChange 
      } 
     }); 
    }; 

    function onYouTubeIframeAPIReady() { 
     attachToYoutubeFrame(); 
    }; 
}); 

回答

3

您的onYouTubeIframeAPIReady()函數必須全局定義。只需使用

window.onYouTubeIframeAPIReady = function() { 

同樣重要的是加載YouTube的iframe的API庫文件替換線

function onYouTubeIframeAPIReady() { 

<script type="text/javascript" src="https://www.youtube.com/iframe_api"></script> 

而且您的IFRAME SRC網址必須有附加的enablejsapi = 1參數:

http://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1 
0

如果有人一個在這裏爲此而努力是解決它的人......

添加 - 因爲調用它在腳本中出現問題的原因

此外,請確保您的使用 - window.onYouTubeIframeAPIReady =功能( ){

這兩件事固定了兩天的憤怒。

+2

你的回答沒有任何改進。爲什麼在一個已經解決的問題上設置一個答案?如果你找到一個好的答案,請把它提出來。 – Sysix 2017-10-19 19:34:14