7

我想在我的 $(document).ready() 函数中添加 youtube iframe api 代码,但是当我这样做时,播放器似乎没有加载,当我将代码移到 document.ready 之外时,播放器加载正常。任何人都可以就我如何在函数内显示此视频提供任何建议吗?

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');
    }
});
4

2 回答 2

11

如果您更改function onYouTubePlayerAPIReady() {...}window.onYouTubePlayerAPIReady = function() {...}then ,则可以在函数中定义您的 YouTube iframe API 回调$(document).ready(),并可能将其他变量从$(document).ready()范围拉入您的回调范围。

不过,我不确定这样做有多大好处,但如果你真的想这样做,这是一个选择。

于 2013-04-22T20:54:25.840 回答
0

该脚本将onYouTubePlayerAPIReady()在加载时调用。当您...假设...在您的 DOM 就绪包装器中“隐藏”这些函数时,它们不再可供 YT API 调用(超出范围)。

因为您无法直接访问 YT API 脚本文件,所以您无法更改此行为,恕我直言,您的要求是不可能的。

于 2013-04-22T11:18:46.213 回答