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)是否有任何新的更改,但找不到。
答案 0 :(得分:5)
似乎问题是我的“youtube_player”iframe被CSS display:none
隐藏了。显然,YouTube要求显示iframe。但是,将iframe的大小调整为1x1 px可以解决它。