Youtube iframe api未捕获TypeError:对象不是函数?

时间:2014-07-16 17:00:07

标签: javascript youtube youtube-api google-api youtube-iframe-api

所以我正在使用以下方法加载YouTube播放列表:

event.target.loadPlaylist(videoIds);

我收到此错误: enter image description here

奇怪的部分是播放列表加载大约一秒钟,  然后打破给我那个错误。

抱歉,周围的代码是:

        window.tag = document.createElement('script');
        tag.src = "https://www.youtube.com/iframe_api";

        window.firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        // 3. This function creates an <iframe> (and YouTube player)
        //    after the API code downloads.
        // window.player;
        window.onYouTubeIframeAPIReady = function() {
            player = new YT.Player('player', {
                height: '480',
                width: '853',
                playerVars: {
                    controls: 1,
                    modestbranding: 1,
                    playsinline: 1,
                    showinfo: 1,
                    iv_load_policy: 3,
                    rel: 0
                },
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }
        window.onPlayerReady = function(event) {
            //wierd 404 errors sometimes
            event.target.loadPlaylist(videoIds, 0, 0, 'large');
            event.target.playVideo();
        }

        window.onPlayerStateChange = function(event) {
            console.log('the state changed: '+ event.data);
            if (event.data === 1) {
                console.log(event.target.getDuration());
                globalYoutubePlayerCounter++;
                console.log('youtube player count: ' +globalYoutubePlayerCounter);
            }
            if (globalYoutubePlayerCounter >= 6) {
                /* load the next set of videos */
                globalYoutubePlayerCounter = 0;
                console.log('playlist ended');
                if (that.finalTrackList.length > 0) {
                    that.getNextTenMusic(event.target);
                }else{
                    // recall for general searches;
                    // that.getNextTenGeneral(event.target);
                }
                /* load the next set of videos */
            }
        }

即使出现错误,所有视频列表都已正确格式化。 Console.log确认了这一点。

1 个答案:

答案 0 :(得分:1)

我遇到同样的问题,但loadVideoById。对我来说,问题是玩家没有完全初始化,因此确实没有方法loadVideoById。也许如果有人遇到同样的问题,请尝试推迟通话,看看是否有帮助。