我正在使用带有以下代码的 iFrame Youtube API。我用 Ajax 调用这个视图来呈现它并将它附加到我页面中的 div.yt-player 中。它在我第一次调用视图时起作用,但是在我关闭视频(它清空 div.yt-player)并单击另一个调用我的视图的链接后,视频根本不会加载(空白)。我一直在挣扎,但仍然不明白为什么会这样,尤其是它第一次起作用。任何形式的帮助将不胜感激。谢谢。
PS:html 和 javascript 都是由视图呈现的。
Html
<div id="player"></div>
Javascript:
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '486',
width: '864',
videoId: '#{@media['youtube_url']}',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
},
playerVars: {
'showinfo': 0,
'iv_load_policy': 3,
'color': 'white',
'fs': 1,
'autoplay': 1,
'vq': 'hd720'
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}