Youtube IFrame API playVideo()错误

时间:2017-04-28 13:13:39

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

Youtube的IFrame API不再适用于我。 onYouTubeIframeAPIReady()onYouTubePlayerReady()都会被执行。但是,当尝试加载/播放视频时,我收到以下错误:

base.js:2575 Uncaught TypeError: Cannot read property 'g' of null
    at jL (base.js:2575)
    at nL (base.js:2567)
    at PU.g.h.nh (base.js:5853)
    at E0 (base.js:3841)
    at q1.g.h.Lr (base.js:6904)
    at q1.g.h.Dy (base.js:6905)
    at r1 (base.js:3909)
    at L1.g.h.Vn (base.js:6937)
    at L1.g.h.nN (base.js:6679)
    at g.bD.g.h.V (base.js:5529)

以下是我使用IFrame API的方法

// Load YouTube Player
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

// Create YouTube Player
var jukeBoxYoutubePlayer;
function onYouTubeIframeAPIReady() {
    console.log("iframe api ready");

    jukeBoxYoutubePlayer = new YT.Player('youtube_player', {
        height: '400px',
        width: '400px',
        events: {
            'onReady': onYouTubePlayerReady
        }
    });
}

// On Ready Event
function onYouTubePlayerReady(event) {
    console.log("player ready");

    jukeBoxYoutubePlayer.unMute();
    jukeBoxYoutubePlayer.setVolume(75);
}

以下是我加载和播放视频的方式:

jukeBoxYoutubePlayer.loadVideoById("ubtbkgUmHHE", 0, "large");
jukeBoxYoutubePlayer.playVideo();

我不明白为什么我的代码无效。它已经工作了几个月。我还重新检查了文档(https://developers.google.com/youtube/iframe_api_reference)是否有任何新的更改,但找不到。

1 个答案:

答案 0 :(得分:5)

似乎问题是我的“youtube_player”iframe被CSS display:none隐藏了。显然,YouTube要求显示iframe。但是,将iframe的大小调整为1x1 px可以解决它。