2013-04-22 29 views
7

我想在我的$(document).ready()函數中添加youtube iframe api代碼,但是當我這樣做時,播放器似乎無法加載, document.ready玩家加載正常。任何人都可以提供任何建議,我怎麼能讓這個視頻出現在函數內部時?當它的加載在document.ready中添加youtube iframe代碼的問題

JS

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

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

    function onPlayerReady() { 
     console.log('ready'); 
    } 

    function onPlayerStateChange() { 
     console.log('player changed'); 
    } 
}); 

回答

10

如果更改function onYouTubePlayerAPIReady() {...}window.onYouTubePlayerAPIReady = function() {...}那麼它可能在$(document).ready()函數中定義您的YouTube的iframe API的回調,而在其他變量可能拉從$(document).ready()範圍到您的回調範圍。

雖然我不確定這樣做有多大優勢,但是如果您真的想這樣做,這是一個選擇。

+0

這樣做的優勢 - 我的目的是首先加載網站,留下YouTube iframe,待所有內容到位後 – 2016-05-29 20:46:56

0

該腳本將調用onYouTubePlayerAPIReady()。當你......讓我們說......將這些函數「隱藏」在DOM就緒包裝器中時,它們不再可用於YT API調用(超出範圍)。

由於您無法直接訪問YT API腳本文件,因此無法更改此行爲,而且您所要求的恕我直言不可能。