我在让youtube api工作时遇到问题。 API本身已加载,并且onYouTubeIframeAPIReady()
函数被调用,但是onReady
不起作用。
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubeIframeAPIReady() {
log('API')
log(document.getElementById('yt-pilezspnvu'));
var player = new YT.Player('yt-pilezspnvu', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
log(event);
}
function onPlayerStateChange(event) {
log(event);
}
上面的代码未包装在任何函数或任何内容中。下图中的错误只是我的adblock内容。我已尝试按照此线程https://stackoverflow.com/a/20505337/736967中的指示添加
origin=http://example.com
,但仍无法正常工作。最佳答案
我认为您需要一些多余的东西。
尝试将其添加到您的代码中。
ytplayer = new YT.Player('ytplayer', {
height: '385',
width: '640',
videoId: '[your-videoID]',
playerVars: {'wmode': 'opaque', 'autohide': 1 , 'enablejsapi': 1 , 'origin': 'http://www.yousite.com', 'rel': 0},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange,
}
playerVars
有很多部分,您可以使用或不使用。但是您绝对需要在播放器中加载一些内容。 VideoID或PlayList。否则将不会发生任何事情。
关于javascript - 嵌入式YouTube iframe的onReady不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128874/