2013-04-22 31 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脚本文件,因此无法更改此行为,而且您所要求的恕我直言不可能。