javascript/youtube api - undefined variable YT

标签 javascript youtube youtube-api youtube-javascript-api

我正在创建一个通过 YT api 嵌入的 YouTube 播放器,但我不断收到一个警告,提示变量 YT 未定义。我可以看到包含了 youtube API 的脚本,它应该创建变量 YT - 为什么这不起作用?它适用于我网站的其他地方。

这是链接:

http://oncreativity.tv/site/single/4/7CtQaTmEuWk

和我的代码:

<script>

 $(document).ready(function() {

    var tag = document.createElement('script');
    tag.src = "http://www.youtube.com/player_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    var player;

    var videoSupport = Modernizr.video;
    var ua = navigator.userAgent.toLowerCase();
    var vid = {};

    var params = { allowScriptAccess: "always" };
    var atts = { id: "video_player_flash" };

    {exp:channel:entries channel="creators" dynamic="off" entry_id="{segment_3}" sort="asc" limit="1"}  
    vid.description = "{creator_description}";
    vid.videoID = '{segment_4}';
    vid.link = encodeURI("{creator_link}");
    vid.title = "{title}";
    vid.photos = [];
    {creator_work}  
        vid.photos[{row_index}] = {};
        vid.photos[{row_index}].url = "{work_img}";
        vid.photos[{row_index}].title = "{work_title}";
    {/creator_work}
    {/exp:channel:entries}

    var $vidContainerRef = $('#video_player_container');
    var $vidPlayer = $('<div id="video_player"/>');
    $vidContainerRef.append($vidPlayer);
    vidID = vid.videoID;

    player = new YT.Player('video_player', {
        width: '768',
        height: '432',
        videoId: vidID,
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });

});

</script>

最佳答案

您需要将 YT 调用包装在一个函数中,并在包含脚本时调用它。或者您可以从文件中添加脚本而不是调用该脚本来包含另一个脚本。

function doYT(){
    window.player = new YT.Player('video_player', {
        width: '768',
        height: '432',
        videoId: vidID,
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    }
}

window.YT && doYT() || function(){
    var a=document.createElement("script");
    a.setAttribute("type","text/javascript");
    a.setAttribute("src","http://www.youtube.com/player_api");
    a.onload=doYT;
    a.onreadystatechange=function(){
        if (this.readyState=="complete"||this.readyState=="loaded") doYT()
    };
    (document.getElementsByTagName("head")[0]||document.documentElement).appendChild(a)
}();

关于javascript/youtube api - undefined variable YT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11003216/

相关文章:

javascript - GBK 编码/解码字符集

javascript - 使用 ID/Class 创建通用 keydown 函数

javascript - 将 UNIX 时间戳表示为两个数字(前 32 位和接下来的 16 位)

android - youtubeExtractor for Android

php - file_get_contents()无法与YouTube一起使用

vb.net - 如何使用 youtube API 对视频添加评论???有人可以告诉我怎么做吗?

ssl - 使用 cURL 和 API v3 将视频上传到 YouTube 时出错

javascript - 如何将页面上的所有帧打印到一个文件中

YouTube 视频上传 API

youtube-api - YouTube 数据 API 'youtube#channel' 查询 : the 'brandingSettings.image' is no longer available as of 11-11-2020?